ngx映射到lua模块函数变量一览
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169ngx.arg[1] 脚本参数ngx.var['arg_a'] 取queryString的参数a #/nginx_var?a...
sql语句优化的一些方法
sql语句优化的一些方法避免全表扫描对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 避免在 where 子句中使用!=或<>操作符应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。 避免在 where 子句中对字段进行 null 值判断应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: 12345select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id from t where num=0 避免在 where 子句中使用 or 来连接条件应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如: 123456789select id from t where num=10 or num=20可以这样查询:select id from ...
记一次数据库结构优化经验-水平分表
最近一个项目模块的数据库要进行结构调整优化,所以这里记录一下 首先我们是做汽车后市场业务的产品, 所有的业务和车型的sku数据息息相关,所以关于车型服务模块的压力在同比当中是比较大的。而目前我们的问题是qps并不高,但是数据库的cpu却经常7/8十 为什么会这样? 主要是该模型库的数据量庞大,数据表结构厚,导致在qps并不高的时候cpu消耗也比较高.所以大qps,小cpu消耗是我们解决问题的方向 前景有了,接下来就是解决问题的方案 数据库调整,怎么调整?从表思考两个方向 长度-数据量 厚度-表结构 上游调用需要频率 当然具体探讨流程就不叙述了(这里涉及到业务的东西很多),最终领导敲板车型库其中两个数据量庞大,调用频率高的表按分片键水平分表 这里记一下整体调整的过程 接口服务调整 121. 所有有关这俩表的crud都必须带上分片键2. 既要保证兼容,又要确保可拓展(其实很简单,就是分片键传参粒度高些) 分表及数据迁移(存储过程) 12345678910111213141516171819202122232425262728293031323334353...
记录binlog的使用
配置文件 先看配置文件 启用了才有这样的记录默认是没有的 linux系统中的 /etc/my.cnf my.cnf内容:log-bin = mysqlbin # 默认配置,mysqlbin 为binlog文件名称 binlog文件一般放在/var/lib/mysql比如上面的设置重启数据库会生成mysqlbin.000001文件,并放在/var/lib/mysql下 自定义文件存放位置修改配置文件,vi /etc/my.cnf,找到log-bin的部分配置自动清理在my.cnf文件中,这个文件路径不知道的话执行mysql --help | grep 'Default options' -A 1,就会列出文件的路径来 然后重启service mysql restart,去新建的目录下看看,已经有最新的日志了 下面列几个常用的命令查看bin_log相关信息show variables like '%log_bin%'; 查看日志开启状态show variables like ...
elasticsearch聚合使用方式
数据聚合聚合(aggregations) 可以让我们极其方便的实现对数据的统计、分析、运算。例如: 什么品牌的手机最受欢迎? 这些手机的平均价格、最高价格、最低价格? 这些手机每月的销售情况如何? 实现这些统计功能的比数据库的sql要方便的多,而且查询速度非常快,可以实现近实时搜索效果。 聚合分类 名称 作用 对比Mysql 分桶类型 (Bucket) 满足特定条件的文档的集合 类似GROUP BY语法 指标分析类型(Metric) 计算最大值,最小值,平均值等 类似 COUNT 、 SUM() 、 MAX() 等统计方法 管道分析类型(Pipeline) 对聚合结果进行二次分析 矩阵分析类型(Matrix) 支持对多个字段的操作并提供一个结果矩阵 Bucket聚合分析按照Bucket的分桶策略,常见的Bucket聚合分析如下: 策略 描述 Terms 最简单策略,如果是text类型,则按照分词后的结果分桶 Range 按照指定数值的范围来设定分桶规则 Date Range 通过指定日期的范围来设定分桶规则 Histogr...
Nginx日志配置详解
前言Nginx日志对于统计、系统服务排错很有用。Nginx日志主要分为两种:access_log(访问日志)和error_log(错误日志)。通过访问日志我们可以得到用户的IP地址、浏览器的信息,请求的处理时间等信息。错误日志记录了访问出错的信息,可以帮助我们定位错误的原因。本文将详细描述一下如何配置Nginx日志。 设置access_log访问日志主要记录客户端的请求。客户端向Nginx服务器发起的每一次请求都记录在这里。客户端IP,浏览器信息,referer,请求处理时间,请求URL等都可以在访问日志中得到。当然具体要记录哪些信息,你可以通过log_format指令定义。 语法12access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]]; # 设置访问日志access_log off; # 关闭访问日志 path 指定日志的存放位置。 format 指定日志的格式。默认使用预定义的combined。 buffer 用来指定日志写入时的缓存大小。默认是64k。 gzip...
Docker命令记录(长期)
Docker命令大全配置docker登陆时命令非明文环境变量的登录方式(通过/etc/profile设置PASSWORD变量),以下示例从变量读取密码,然后使用STDIN将其传递给docker login命令: 1echo "$PASSWORD" | docker login --username <xxx> --password-stdin ${REGISTRY_ADDRESS} Docker命令记录(长期)ctr为镜像打tag1ctr images tag oldimage:v1 newimage:v2 docker为镜像打tag1docker tag oldimage:v1 newimage:v2 从容器里面拷文件到宿主机1docker cp 容器名:要拷贝的文件在容器里面的路径 要拷贝到宿主机的相应路径 从宿主机拷文件到docker容器里面1docker cp 要拷贝的文件路径 容器名:要拷贝到容器里面对应的路径 docker内部安装工具/插件/软件123456需要知道docker是一个最小体积...
GraalVM在windows上的环境搭建
前言 GraalVM是一个高性能、云原生、支持多种语言的虚拟机。 GraalVM环境搭建分为两步: 1、下载配置GraalVM和下载native-image。 2,下载配置windows sdk和msvc。 GraalVM下载配置GraalVM 进入到 GitHub 上的 GraalVM 发布存储库。选择适用于 Windows 的基于 Java 11、17 或 19 的发行版,然后下载。我选择的是java17-22.3.0的。 将目录更改为要安装 GraalVM 的位置,然后将.zip存档文件移动到该目录。我这里是放在D:\JDK 将存档解压缩到文件系统。例如D:\JDK 配置环境变量12GRAALVM_HOME=D:\JDK\graalvm-ce-java17-22.3.0JAVA_HOME=D:\JDK\graalvm-ce-java17-22.3.0 验证1234D:\testNative>java -versionopenjdk version "17.0.5" 2022-10-18OpenJDK Runtime Environment G...
git问题处理
不小心使用 git 强制 push 推送了代码, 希望回退到 push 前的状态 如果不小心使用 git 强制 push 推送了代码,还可以回退到 push 前的状态。主要可以通过以下两种方式: 使用 git reflog 查找回退到 push 前的 commit git reflog 会记录最近的操作和 commit 记录,找到 push 前的提交点。 然后使用 git reset --hard <commit> 回退到那个提交点即可。 如果进行了多次 push,reflog 记录很乱,可以回退到某个知道的良好版本 例如回退到版本 v1.2: 1git reset --hard v1.2 然后使用 git push -f 强制推送来覆盖之前的错误提交。 当然最好的方式还是在推送前使用 git stash 暂存变更,或新建分支进行操作。 但强制 push 后的恢复还是可以的,主要是使用 git 提供的回退机制来撤销错误的提交。 git通过ssh认证拉取代码失败,需要手动输入密码: 解决方法 eval ssh-agent -s #启动ssh-agent...
网关orange
github地址: https://github.com/orlabs/orange 官网: http://orange.sumory.com/ 简介 Orange是一个基于OpenResty的API Gateway,提供API及自定义规则的监控和管理,如访问统计、流量切分、API重定向等功能。 特点: 提供了一套默认的Dashboard用于动态管理各种功能和配置 提供了API接口用于实现第三方服务 根据规范编写自定义插件扩展Orange功能 安装及使用(最新可用版0.8.1)安装先安装lor: https://github.com/orlabs/orange/blob/master/README_zh.md#2-%E5%AE%89%E8%A3%85-lor-framework 再进行依赖安装: https://github.com/orlabs/orange/blob/v0.8.1/docs/install-dependencies.md 最后,查看orange的安装和使用: https://github.com/orlabs/orange/blob/v0.8.1/...
