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的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. zabbix4.0监控PG数据库感受
  2. Dynamics 365中自定义工作流活动获取的上下文分析及注意事项
  3. 介绍Dynamics 365的OrgDBOrgSettings工具
  4. Dynamics CRM模拟OAuth请求获得Token后在外部调用Web API
  5. Dynamics 365中自定义工作流活动更新了输入输出参数后获取的方法
  6. 8.5方法重载的判断练习
  7. Python爬虫如何去抓取qq音乐的歌手数据?
  8. STM32F103、FreeModbus从站设计(6)-让串口和Modbus初始化的参数同
  9. Linux下性能压测之系统参数调优

随机推荐

  1. Android DrawerLayout实现抽屉效果
  2. Android 相对布局常用属性
  3. Android(安卓)面试题(经典)
  4. Android EditText无边框问题
  5. Android应用程序组件Content Provider在
  6. Android混淆打包 出现release/jars/3/1f/
  7. android EditText 如何限制只能输入指定
  8. android 开发:使用SwipeRefreshLayout实现
  9. Android(安卓)Studio Error:warning: Ign
  10. mono for android生成APK出现错误fatal e