解决WEB(apache)服务器time_wait过高的性能优化过程
目录
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[i]}'
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 http://www.wdlinux.cn
# 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[i]}'
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[i]}'
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<<EOF
* soft nofile 655350
* hard nofile 655350
EOF
然后Ulimit -SHn 了下
然后time_wait的数量就降到了
[root@www conf]# netstat -n |awk '/^tcp/{++S[$NF]}END{for (i in S ) print i,S[i]}'
TIME_WAIT 96
FIN_WAIT1 46
FIN_WAIT2 29
ESTABLISHED 838
SYN_RECV 30
CLOSING 7
LAST_ACK 3
解决WEB(apache)服务器time_wait过高的性能优化过程的更多相关文章
- GNU Linux高并发性能优化方案
/*********************************************************** * Author : Samson * Date : 07/14/2015 * ...
- 高并发&性能优化(二)------系统监控工具使用
上一篇主要从总体介绍了高并发&性能优化的相关思路和方法,本篇主要介绍系统监控工具. [CPU查看工具] ------top命令(性能) 进入top命令后,按1即可看到每核CPU的运行指标与详细 ...
- 用Netty开发中间件:高并发性能优化
用Netty开发中间件:高并发性能优化 最近在写一个后台中间件的原型,主要是做消息的分发和透传.因为要用Java实现,所以网络通信框架的第一选择当然就是Netty了,使用的是Netty 4版本.Net ...
- 用Netty开发中间件:高并发性能优化(转)
用Netty开发中间件:高并发性能优化 最近在写一个后台中间件的原型,主要是做消息的分发和透传.因为要用Java实现,所以网络通信框架的第一选择当然就是Netty了,使用的是Netty 4版本.Net ...
- SpringCloud高并发性能优化
1. SpringCloud高并发性能优化 1.1. 前言 当系统的用户量上来,每秒QPS上千后,可能就会导致系统的各种卡顿,超时等情况,这时优化操作不可避免 1.2. 优化步骤 第一步:优化大SQL ...
- Java 架构师+高并发+性能优化+Spring boot大型分布式项目实战
视频课程内容包含: 高级 Java 架构师包含:Spring boot.Spring cloud.Dubbo.Redis.ActiveMQ.Nginx.Mycat.Spring.MongoDB.Zer ...
- 高并发&性能优化(一)------总体介绍
[开篇词] 本文主要通过一些经典的高并发场景,以及一些基本的运维工具来讲述一些关于高并发以及性能优化相关的内容,主要包括性能瓶颈的定位,性能调优的思路和技巧等. [性能的衡量指标] ?什么是性能 性能 ...
- 嵌入式流媒体音视频服务器EasyIPCamera中live555发送性能优化点
EasyIPCamera流媒体服务器 今年EasyDarwin团队在给国内某最大的金融安防公司做技术咨询的时候,开发了一款适用于嵌入式IPCamera.NVR的RTSP流媒体服务器:EasyIPCam ...
- web前端开发,如何提高页面性能优化?
内容方面: 1.减少 HTTP 请求 (Make Fewer HTTP Requests) 2.减少 DOM 元素数量 (Reduce the Number of DOM Elements) 3.使得 ...
随机推荐
- JNI 从C文件向Java文件传递多个参数
JNI C主函数 #include <jni.h> #include <string.h> #include <android/log.h> #include &q ...
- ACM1229_还是A+B(求A的第K位的数公式:A%((int)(pow(10,K)))
#include<stdio.h> #include<math.h> int main() { int A,k,B,sum,c,d; while(scanf("%d% ...
- Navicat远程连接MySQL数据库
1.打开Navicat,在界面的“主机名和IP地址”处输入IP地址,一般是192.168.1.1 2.输入相应的用户名和密码,点击连接测试,确认是否已经连接,之后就可以点击确定了 3.找到相应的数据库 ...
- C# 自己对delegate的总结和认识
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- 站在巨人的肩膀上学习Android开发
我们知道,一開始最好的学习方法是模仿,尤其是模仿巨人. 那说到Android开发的模仿自然就是分析并研究主流程序的布局.实现方法.进而提升自己的技术. 第一招----逆向project 要分析&quo ...
- Android怎样改动app不在多任务列表中显示
在实际开发中,我们希望某些activity或者应用程序不在多任务列表中显示,即长按Home键或者多任务button键不显示近期执行的程序,我们能够在对应应用程序的AndroidManifest.xml ...
- git 远程 强制合并本地
反过来,如果希望用代码库中的文件完全覆盖本地工作版本. 方法如下: git reset --hard git pull
- Android_设备隐私获取,忽略6.0权限管理
1.前言 (1).由于MIUI等部分国产定制系统也有权限管理,没有相关api,故无法判断用户是否允许获取联系人等隐私.在Android 6.0之后,新增权限管理可以通过官方api判断用户的运行状态: ...
- UVA10518 - How Many Calls?(矩阵高速幂)
UVA10518 - How Many Calls?(矩阵高速幂) 题目链接 题目大意:给你fibonacci数列怎么求的.然后问你求f(n) = f(n - 1) + f(n - 2)须要多少次调用 ...
- iOS内存泄漏自动检测工具PLeakSniffer
新款objective-C内存泄漏自动检测工具 PLeakSniffer , GitHub地址 (https://github.com/music4kid/PLeakSniffer). 背景 前些天读 ...