设为首页 收藏本站
查看: 691|回复: 0

[经验分享] 解决WEB(apache)服务器time_wait过高的性能优化过程

[复制链接]
累计签到:29 天
连续签到:1 天
发表于 2018-11-23 13:49:11 | 显示全部楼层 |阅读模式
  目录
  1.网站的硬件环境
  2.修改Httpd.conf
  3.修改sysctl.conf文件
  一、网站环境LAMP硬件环境
  [root@www conf]# dmidecode -s processor-version
  Intel(R) Xeon(R) CPU E3-1270 V2 @ 3.50GHz
  四核八线程
  内存32G
  [root@www conf]# free -m
  total       used       free     shared    buffers     cached
  Mem:         32080      14406      17674          0        189       1905
  -/+ buffers/cache:      12310      19769
  Swap:         1023          0       1023
  硬盘为SSD raid10 大小 256G
  问题环境如下time_wait 9K多,而且一直很稳定,不轮是高峰期,还是平时。都一直停在9K多
  [root@www conf]#  netstat -n |awk '/^tcp/{++S[$NF]}END{for (i in S ) print i,S}'
  TIME_WAIT 9142
  FIN_WAIT1 80
  FIN_WAIT2 19
  ESTABLISHED 89
  SYN_RECV 88
  CLOSING 10
  LAST_ACK 3
  下面是一步一步的配置
  二、修改Httpd.conf文件
  1)谷歌了一些配置
  参考了下,然后查看了下服务器现在的sysctl.conf的配置
  发现 下面的这些配置都已经配置过了
  net.ipv4.tcp_syncookies = 1
  net.ipv4.tcp_tw_reuse = 1
  net.ipv4.tcp_tw_recycle = 1
  net.ipv4.tcp_fin_timeout = 30
  然后执行 /sbin/sysctl -p 让参数生效。
  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 时间
  这些参数跟原来系统上现有的参数差不多,应该也是从网上cp下来的
  重新sysctl -p 了下,发现没什么效果。
  2)看了下后端的apache配置参数
  # apache conf conf/httpd-wdl.conf
  # Created by 51cto.com
  # Last Updated 2010.06.01
  Timeout 10
  KeepAlive Off
  MaxKeepAliveRequests 512
  KeepAliveTimeout 5
  UseCanonicalName Off
  ServerTokens Prod
  ServerSignature Off
  HostnameLookups Off
  TraceEnable off
  AddType application/x-httpd-php .php
  DirectoryIndex index.html index.php index.htm
  这是原来的配置,
  下面是修改后的配置
  Timeout 10   与客户端连接超时的时间,这个暂时没改变
  KeepAlive On 这个给关闭了,在HTTP1.1中,一次连接可以多次传输,使的一次连接中可以传递多个HTTP请求,然后我给开启了
  MaxKeepAliveRequests 100 设置一次连接内,可以进行多少次请求,原来是512 修改了 100
  KeepAliveTimeout 15 如果服务器已经完成了一次请求,多长时间一直没有接受到下一次请求就会断开连接,这个设置为了15
  UseCanonicalName Off
  ServerTokens Prod
  ServerSignature Off
  HostnameLookups Off
  TraceEnable off
  AddType application/x-httpd-php .php
  DirectoryIndex index.html index.php index.htm
  修改完这几个参数后然后apachectl graceful了下,有了一点效果
  [root@www conf]# netstat -n |awk '/^tcp/{++S[$NF]}END{for (i in S ) print i,S}'
  TIME_WAIT 7594
  FIN_WAIT1 84
  FIN_WAIT2 55
  ESTABLISHED 848
  SYN_RECV 21
  CLOSING 2
  LAST_ACK 12
  [root@www conf]# netstat -n |awk '/^tcp/{++S[$NF]}END{for (i in S ) print i,S}'
  TIME_WAIT 3659
  FIN_WAIT1 33
  FIN_WAIT2 101
  ESTABLISHED 754
  SYN_RECV 23
  CLOSING 3
  LAST_ACK 8
  经过上面的修改后,有一些改变,time_wait已经降到了 3000多
  三、老大帮忙又修改了几个参数sysctl.conf
  后面老大又给了两条建议,修改了下
  net.ipv4.tcp_keepalive_time = 120   改成了30  保持连接的时间,由120改到了30
  net.ipv4.tcp_max_tw_buckets = 10000改成100 这个是设置服务器同时保持的time_wait的数目
  重新设置下Ulimit参数
  cat >>/etc/security/limits.conf

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-638740-1-1.html 上篇帖子: mysql php apache的配置 下篇帖子: Apache日志管理与统计分析
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表