1. 使用操作系统为 Centos6.6
2. 源码包统一下载路径 / application/tools/
3. 服务器脚本目录 / server/scripts
4. 程序安装目录 / application
5. 系统初始化的设置
(1) 开机启动项优化
chkconfig --list | egrep -v "network|rsyslog|sshd|sysstat|crond" | awk -F '''{print "chkconfig",$1,"off"}' | bash
(2) 时间同步
- echo '
- /5
- /usr/sbin/ntpdate 0.asia.pool.ntp.org >/dev/null 2>&1' >> /var/spool/cron/root
(3) 加大文件描述符 (高并发时)
- echo '- nofile 65535'>>/etc/security/limits.conf
- tail -1 /etc/security/limits.conf
(4)sysctl 优化
- cat << EOF >> /etc/sysctl.conf
- net.ipv4.tcp_rmem = 4096 87380 4194304
- net.ipv4.tcp_wmem = 4096 65536 4194304
- net.core.wmem_default = 8388608
- net.core.rmem_default = 8388608
- net.core.rmem_max = 16777216
- net.core.wmem_max = 16777216
- net.core.netdev_max_backlog = 262144
- net.core.somaxconn = 262144
- net.ipv4.tcp_max_orphans = 3276800
- net.ipv4.tcp_max_syn_backlog = 8192
- net.ipv4.tcp_max_tw_buckets = 5000
- net.ipv4.tcp_timestamps = 0
- net.ipv4.tcp_synack_retries = 1
- net.ipv4.tcp_syn_retries = 1
- net.ipv4.tcp_tw_recycle = 1
- net.ipv4.tcp_tw_reuse = 1
- net.ipv4.tcp_mem = 786432 1048576 1572864
- net.ipv4.tcp_fin_timeout = 30
- net.ipv4.tcp_keepalive_time = 1200
- net.ipv4.ip_local_port_range = 1024 65000
- EOF
- /sbin/sysctl -p
net.ipv4.tcp_rmem = 4096 87380 4194304:TCP 读 buffer, 可参考的优化值: 32768 436600 873200
net.ipv4.tcp_wmem = 4096 65536 4194304:TCP 写 buffer, 可参考的优化值: 8192 436600 873200
net.core.wmem_default: 表示发送套接字缓冲区大小的缺省值 (以字节为单位)
net.core.rmem_default: 表示接收套接字缓冲区大小的缺省值 (以字节为单位)
net.core.rmem_max : 表示接收套接字缓冲区大小的最大值 (以字节为单位)
net.core.wmem_max: 表示发送套接字缓冲区大小的最大值 (以字节为单位)
net.core.netdev_max_backlog = 262144: 每个网络接口接收数据包的速率比内核处理这些包的速率快时, 允许送到队列的数据包的最大数目.
net.core.somaxconn = 262144:web 应用中 listen 函数的 backlog 默认会给我们内核参数的 net.core.somaxconn 限制到 128, 而 nginx 定义的 NGX_LISTEN_BACKLOG 默认为 511, 所以有必要调整这个值.
net.ipv4.tcp_max_orphans = 3276800: 系统中最多有多少个 TCP 套接字不被关联到任何一个用户文件句柄上.
net.ipv4.tcp_max_syn_backlog = 8192: 表示 SYN 队列的长度, 默认为 1024, 加大队列长度为 8192, 可以容纳更多等待连接的网络连接数.
net.ipv4.tcp_max_tw_buckets = 5000: 表示系统同时保持 TIME_WAIT 套接字的最大数量, 如果超过这个数字, TIME_WAIT 套接字将立刻被清除并打印警告信息. 减少它的最大数量, 避免 Squid 服务器被大量的 TIME_WAIT 套接字拖死.
net.ipv4.tcp_timestamps = 0: 时间戳可以避免序列号的卷绕. 一个 1Gbps 的链路肯定会遇到以前用过的序列号, 时间戳能够让内核接受这种 "异常" 的数据包, 这里需要将其关掉.
net.ipv4.tcp_tw_recycle = 1: 表示开启 TCP 连接中 TIME-WAIT sockets 的快速回收.
net.ipv4.tcp_tw_reuse = 1: 表示开启重用, 允许将 TIME-WAIT sockets 重新用于新的 TCP 连接.
net.ipv4.tcp_mem = 786432 1048576 1572864: 同样有 3 个值, net.ipv4.tcp_mem[0]: 低于此值, TCP 没有内存压力; net.ipv4.tcp_mem[1]: 在此值下, 进入内存压力阶段; net.ipv4.tcp_mem[2]: 高于此值, TCP 拒绝分配 socket. 可根据物理内存大小进行调整, 如果内存足够大的话, 可适当往上调. 建议 94500000 915000000 927000000.
net.ipv4.tcp_fin_timeout = 30: 表示如果套接字由本端要求关闭, 这个参数决定了它保持在 FIN-WAIT-2 状态的时间.
net.ipv4.tcp_keepalive_time = 1200: 表示当 keepalive 起用的时候, TCP 发送 keepalive 消息的频度. 缺省是 2 小时, 改为 20 分钟.
net.ipv4.ip_local_port_range = 1024 65000: 表示用于向外连接的端口范围. 缺省情况下很小: 32768 到 61000, 改为 1024 到 65000.
来源: http://www.bubuko.com/infodetail-2650406.html