WEB服务器参数优化配置模版
WEB服务器参数优化配置模版
女主宣言:
冰冻三尺非一日之寒,经验要靠平时不断的积累。从故障案例解决到性能参数调优,HULK运维团队在支持公司多个生命线业务的过程中积累了不少的经验,今天就为大家分享一篇来自HULK addops团队的“WEB服务端系统性能参数优化总结模版”,希望能够帮助大家!
PS:丰富的一线技术、多元化的表现形式,尽在“HULK一线技术杂谈”,点关注哦!
背景简介
在日常的运维工作中,常常会遇到一些由于大流量导致的性能瓶颈,比如当连接数达到某值时,服务端的负载开始加大、日志error开始增多、应用程序开始超时等等问题。每一个系统的负载能力都会有一个它的临界值,而如果通过科学的方法进行系统调优,就会最大化的发挥系统性能的吞吐力,并充分利用系统资源,增大这个临界值。
经过漫长的经验积累,团队内部总结出了一份标配的配置模版,并且已经稳定支持了公司内部的多个重要业务线。无私的我们决定将这份模版分享给大家,并和大家一起聊聊参数优化的这些事儿!
系统参数优化
内核参数优化:
vi /etc/sysctl.conf net.ipv4.tcp_keepalive_time = 300net.ipv4.tcp_keepalive_intvl = 10net.ipv4.tcp_keepalive_probes = 5net.ipv4.tcp_tw_reuse = 1net.ipv4.tcp_tw_recycle = 0net.ipv4.tcp_timestamps = 1net.ipv4.tcp_ecn = 0net.ipv4.tcp_sack = 1net.ipv4.tcp_dsack = 0net.ipv4.tcp_fin_timeout = 3net.ipv4.tcp_rmem = 4096 2097152 16777216net.ipv4.tcp_wmem = 4096 2097152 16777216net.ipv4.tcp_max_orphans = 3276800net.ipv4.tcp_max_tw_buckets = 18000net.ipv4.tcp_no_metrics_save = 1net.ipv4.tcp_max_syn_backlog = 262144net.ipv4.tcp_synack_retries = 2net.ipv4.tcp_syn_retries = 2net.ipv4.tcp_syncookies = 1net.ipv4.tcp_mem = 196608 2097152 3145728net.ipv4.ip_local_port_range = 1024 65000net.core.rmem_default = 16777216net.core.wmem_default = 16777216net.core.rmem_max = 16777216net.core.wmem_max = 16777216net.core.somaxconn = 262144net.core.netdev_max_backlog = 300000fs.file-max = 1280000net.unix.max_dgram_qlen = 10000
执行 sysctl -p 使其生效。
细节说明:
TCP有一种行为,可以缓存每个连接最新的时间戳,后续请求中如果时间戳小于缓存的时间戳,即视为无效,相应的数据包会被丢弃。
推荐设置:
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_timestamps = 1
文件句柄限制:
vi /etc/security/limits.d/def.conf
- soft nofile 65535
- hard nofile 65535
- soft nproc 65535
- hard nproc 65535
保存退出后,即可生效。
Web程序参数优化
Nginx:
server { listen 80 backlog=2048; }
PHP:
pm = static;pm.max_children = 1024;pm.max_requests = 1000;emergency_restart_threshold = 1;emergency_restart_interval = 1m;
修改完Nginx+PHP的配置文件后重启生效。
细节说明:
pm.max_children的值一定不能大于"* soft nproc"文件句柄数的限制,否则会报错。
总结
团队内部的每一个Web服务器初始化的过程中都会按照这个模版去进行配置,当然有特殊情况的话还是要具体问题具体分析。每个参数的解释可自行通过google查看,这里不多做解释。如果对于某个参数的配置有疑问、或者有啥想交流的地方,关注我们留言即可!o(∩_∩)o~
©著作权归作者所有:来自51CTO博客作者mob604756f04b77的原创作品,如需转载,请注明出处,否则将追究法律责任更多相关文章
- zabbix4.0监控PG数据库感受
- Dynamics 365中自定义工作流活动获取的上下文分析及注意事项
- 介绍Dynamics 365的OrgDBOrgSettings工具
- Dynamics CRM模拟OAuth请求获得Token后在外部调用Web API
- Dynamics 365中自定义工作流活动更新了输入输出参数后获取的方法
- 8.5方法重载的判断练习
- Python爬虫如何去抓取qq音乐的歌手数据?
- STM32F103、FreeModbus从站设计(6)-让串口和Modbus初始化的参数同
- Linux下性能压测之系统参数调优