2018-05-02 alta系统故障——php修改redis短连接为长连接

  1. 多次受到同事反应alta系统经常出现502错误,一直未找到原因
    2.alta开发初步定为到mysql会话较多
  2. 修改了php-fpm (/usr/local/php/etc/php-fpm.conf)使其接收更多请求:
    [global]
    log_level = error
    daemonize = yes
    events.mechanism = epoll
    rlimit_files = 50240
    emergency_restart_threshold = 60
    emergency_restart_interval = 60s

[fcgi]
user = webapps
group = webapps
listen = 0.0.0.0:9000
listen.backlog = 2048
pm = dynamic
pm.max_children = 200
pm.start_servers = 50
pm.min_spare_servers = 36
pm.max_spare_servers = 200
pm.max_requests = 700
request_terminate_timeout = 40s
request_slowlog_timeout = 20s
slowlog = /usr/local/php/var/log/php-slow.log
pm.status_path = /php-fpm_status
4.使用多个方式检查当前socket连接状态,比如:
netstat -an | awk '/^tcp/ {++s[$NF]} END {for(a in s) print a,s[a]} ' | sort -n -k2 -r
发现time_wait socket非常多。关闭nginx和php-fpm,等待time_wait socket被释放完。最后充气球nginx和php-fpm。
5.短时间内好了。马上看到又出现问题。观察到mysql会话还是越来越多。
6.再次访问网站,报错:
Connect Error: 1129 -- Host '172.17.0.17' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'

http://admin.mobcastlead.com/admin?m=advert&p=appdata

上述错误表示mysql发现某ip连接数太多了,已经屏蔽之。
于是登录winIP,使用navicat打开命令行,输入flush hosts并执行,终于解除限制了!
我还一直在是flush-hosts呢!尴尬。。知道我又搜了下,看到如下回复:
root登陆mysql执行flush hosts 或mysqladmin执行flush hosts 或者重启MySQL服务

  1. 赶紧问了一下alta开发他们系统会很频繁地查询mysql吗?得到回到是只有redis查询失败才会这样。
    于是又观察到redis的socket连接非常多且绝大多数是time_wait状态。
    于是问他们是不是没有用redis连接池。对方开发意识到了,于是修改短连接为长连接。
    稍后,问题很快得到改善。redis连接立马降低了,mysql终于稳定下来了——没有频繁的访问了。

你可能感兴趣的:(2018-05-02 alta系统故障——php修改redis短连接为长连接)