文章目录
- 0、架构
- 1、现象
- 2、查看服务器指标
- 2.1 cpu负载不高
- 2.2 内存指标
- 2.3 硬盘指标
- 2.4 错误日志
- 2.5 大量的tcp连接为TIME_WAIT
- 3、总结
0、架构
nginx—>httpd—>postgres
单体服务
1、现象
进入页面非常慢。。。
2、查看服务器指标
2.1 cpu负载不高
如下图:
2.2 内存指标
内存也还有剩余。
2.3 硬盘指标
硬盘也没有问题。
2.4 错误日志
在httpd的错误日志发现了问题,发现大量的调用数据库连接报错。
接着看了下数据库连接(如下图),一直在200左右。
所以问题应该出在这边,查了下postgres的最大连接配置为200,我把它改成500,如下:
这是最大的问题。
2.5 大量的tcp连接为TIME_WAIT
处理:
编辑内核文件/etc/sysctl.conf,加入以下内容:
net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
net.ipv4.tcp_fin_timeout = 30 修改系默认的 TIMEOUT 时间
然后执行 /sbin/sysctl -p 让参数生效.
处理后的效果:
3、总结
最主要的问题是数据库最大连接数限制了。