openresty mysql 批量_openresty 并发处理mysql的一些配置

因为是自己调试着玩,系统环境比较low,只是一个虚拟机。

要测试并发,首先要将系统能支持的文件描述符数更改,默认系统是1024。

修改的文件为/etc/security/limits.conf

在底下增加一行*  -    nofile  100000

重启系统。执行ulimit -n,看到结果是100000。

如果只是临时想更改文件描述符数,只需要执行ulimit -n 100000,这样只会在当前终端上生效。

修改好文件描述符后,做并发5000的测试,发现nginx报错,报错内容为worker connections not enough,上网查找结果是在

nginx.conf的events中,修改配置worker_connections  1024 ,将1024改为20000。

在配置文件的最外层增加配置worker_rlimit_nofile 100000;

要并发,肯定要用到连接池。openresty 的mysql库自带了连接池API。

local pool_max_idle_time = 20000  --ms

local pool_size = 200--connections

local ok, err = db:set_keepalive(pool_max_idle_time, pool_size)

设置连接池的数量为200,20秒后没有连接则释放此连接。

这时做并发测试,还是会报错,说mysql 连接数超出,无法连接。

要去修改mysql的配置,默认连接数为100。

修改路径为/etc/mysql/my.cnf

修改max_connections 字段

最后再次测试,发现还是报错,报错内容为lua tcp read timeout ,conn't connect mysql 。

经排查是写lua 的时候,new mysql后,有个 db:set_timeout(1000),之前设置位1秒,因为是虚拟机,磁盘IO比较慢,并发处理

数据会慢一些,导致超时,将这个时间改大一些就好了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值