System Optimization

Posted 芒果牛奶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了System Optimization相关的知识,希望对你有一定的参考价值。

==========

/etc/security/limits.conf 控制PAM用户的打开文件数,进程数等

查看用户的限制,ps aux|grep httpd,获取pid,然后cat /proc/$pid/limits


==========
关闭多余的服务 如:postfix

systemctl list-unit-files|grep \'enabled\'




=============
/etc/sysctl.conf 控制linux系统的参数

kernel.pid_max = 4194303 cat /proc/sys/kernel/pid_max
PID分配限制值。当内核下一个PID值到达这个值,它会回到最低的PID值。PID的最大的pid_max未分配,默认值为32768


fs.file-max = 999999
#系统最大打开文件数

vm.swappiness = 0
#内存剩下多少使用虚拟内存(swap),0表示尽量不使用,10表示剩下10%时使用,即内存用到90%时使用。



net.ipv4.ip_local_port_range = 1024 65535
#表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为1024到65535。

net.ipv4.tcp_max_syn_backlog = 65535
#表示SYN队列长度,默认1024,改成65535,可以容纳更多等待连接的网络连接数。

linux系统下内核参数优化,参数配置得当可以大大提高系统的性能,也可以根据特定场景进行专门的优化,如TIME_WAIT过高,DDOS攻击等等。

根据TCP协议定义的3次握手断开连接规定,发起socket主动关闭的一方(服务器主动关闭连接)。socket将进入TIME_WAIT状态,TIME_WAIT状态将持续2个MSL(Max Segment Lifetime),在Windows下默认为4分钟,即240秒,TIME_WAIT状态下的socket不能被回收使用,导致大量的TIME_WAIT,甚至比处于Established状态下的socket多的多,严重影响服务器的处理能力,甚至耗尽可用的socket,停止服务。

net.core.somaxconn = 65535
#Linux kernel参数,表示socket监听的backlog(监听队列)上限

net.ipv4.tcp_max_tw_buckets = 10000
#表示系统同时保持TIME_WAIT套接字的最大数量

net.ipv4.tcp_tw_reuse = 1
#表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;

net.ipv4.tcp_tw_recycle = 1
#表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。

tcp_tw_recycle:
回收TIME_WAIT连接
对客户端和服务器同时起作用,开启后在 3.5*RTO 内回收,RTO 200ms~ 120s 具体时间视网络状况。RTO(Retransmission TimeOut)重传超时时间.内网状况比tcp_tw_reuse 稍快,公网尤其移动网络大多要比tcp_tw_reuse 慢,优点就是能够回收服务端的TIME_WAIT数量

但是,有个小坑:当多个客户端通过NAT方式联网并与服务端交互时,服务端看到的是同一个IP,也就是说对服务端而言这些客户端实际上等同于一个,可惜由于这些客户端的时间戳可能存在差异,于是乎从服务端的视角看,便可能出现时间戳错乱的现象,进而直接导致时间戳小的数据包被丢弃。客户端处于NAT很常见,基本公司家庭网络都走NAT.

tcp_tw_reuse:
复用TIME_WAIT连接 
只对客户端起作用,1秒后才能复用,当创建新连接的时候,如果可能的话会考虑复用相应的TIME_WAIT连接。通常认为tcp_tw_reuse比tcp_tw_recycle安全一些,这是因为一来TIME_WAIT创建时间必须超过一秒才可能会被复用;二来只有连接的时间戳是递增的时候才会被复用。


客户端tcp_tw_reuse
复用连接管用, tcp_tw_recycle有用,但是客户端主要不是接受连接,用处不大

服务器tcp_tw_recycle
回收连接管用,tcp_tw_reuse复用无效。为了减少TIME_WAIT留在服务器,可以在服务器开启KeepAlive,尽量不让服务器主动关闭,而是客户端主动关闭,减少TIME_WAIT产生.




net.ipv4.tcp_fin_timeout = 30
#表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。# FIN_WAIT 超时时间。


net.core.rmem_max = 16777216
#指定了接收套接字缓冲区大小的最大值(以字节为单位)。

net.core.wmem_max = 16777216
#定义发送窗口的最大大小;对于更大的 BDP 来说,这个大小也应该更大。

net.ipv4.tcp_syncookies = 1
#表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;


centos 6

yum update -y

system time
<code>
yum install -y sysstat man wget screen ntp
chkconfig ntpd on
chkconfig acpid off; chkconfig ip6tables off; chkconfig netfs off; chkconfig postfix off; chkconfig udev-post off
chkconfig --list | grep 3:on
sed -i \'s/"UTC"/"Asia\\/Kuala_Lumpur"/\' /etc/sysconfig/clock
rm -f /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Kuala_Lumpur /etc/localtime
/usr/sbin/ntpdate 0.centos.pool.ntp.org
</code>

system optimization
<code>
echo "fs.file-max = 999999" >> /etc/sysctl.conf
echo "vm.swappiness = 0" >> /etc/sysctl.conf
echo "net.core.somaxconn = 1024" >> /etc/sysctl.conf
echo "net.ipv4.tcp_tw_recycle = 1" >> /etc/sysctl.conf
echo "net.ipv4.tcp_tw_reuse = 1" >> /etc/sysctl.conf
echo "net.core.rmem_max = 8388608" >> /etc/sysctl.conf
echo "net.core.wmem_max = 8388608" >> /etc/sysctl.conf
echo "net.ipv4.tcp_max_syn_backlog = 4096" >> /etc/sysctl.conf
echo "net.ipv4.ip_local_port_range = 1024 65535" >> /etc/sysctl.conf
echo "net.netfilter.nf_conntrack_max= 1966080" >> /etc/sysctl.conf

sysctl -p

echo -e "*\\t soft\\t nofile\\t 999999" >> /etc/security/limits.conf
echo -e "*\\t hard\\t nofile\\t 999999" >> /etc/security/limits.conf
</code>

firewall
<code>
/sbin/iptables -F
/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A INPUT -s 10.1.0.0/16 -j ACCEPT
/sbin/iptables -A INPUT -s 10.0.1.0/24 -j ACCEPT
/sbin/iptables -A INPUT -s 192.168.10.0/24 -j ACCEPT
/sbin/iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
/sbin/iptables -A INPUT -m limit --limit 5/sec -j LOG --log-prefix "iptables: " --log-level 7
/sbin/iptables -P INPUT DROP
/sbin/iptables -P FORWARD DROP
/sbin/iptables -P OUTPUT ACCEPT

/etc/init.d/iptables save
/etc/init.d/iptables restart
</code>

ssh
<code>
mkdir ~/.ssh/
vi ~/.ssh/authorized_keys

vi /etc/ssh/sshd_config
<code>
Port 22
ListenAddress 0.0.0.0
Protocol 2
SyslogFacility AUTHPRIV
LoginGraceTime 1m
StrictModes yes
MaxAuthTries 5
MaxSessions 5
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PermitEmptyPasswords no
PasswordAuthentication yes
ChallengeResponseAuthentication no
UsePAM yes
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
X11Forwarding no
PrintLastLog yes
TCPKeepAlive yes
MaxStartups 5
UseDNS no
Subsystem sftp /usr/libexec/openssh/sftp-server
AllowUsers root
</code>

    
/etc/init.d/sshd restart
restorecon -R -v *
restorecon reset /root/.ssh/authorized_keys context unconfined_u:object_r:admin_home_t:s0->unconfined_u:object_r:ssh_home_t:s0
</code>

以上是关于System Optimization的主要内容,如果未能解决你的问题,请参考以下文章

System.Web.Optimization 捆绑 css js 缓存

System.Web.Optimization找不到引用

System.Web.Optimization 合并压缩技术的使用

System.Web.Optimization 是 .Net Framework 4.5 的一部分吗?

如何从 MVC5 中删除 System.Web.Optimization

System.web.optimization AssetManager 增加内存使用率