关于linux:System-Optimization

69次阅读

共计 4509 个字符,预计需要花费 12 分钟才能阅读完成。

==========

/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>

正文完
 0