日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

LINUX性能调优方法总结

發(fā)布時間:2025/3/17 linux 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LINUX性能调优方法总结 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、調整TCP的滑動窗口

大多數 Linux 發(fā)布版都定義了適當的緩沖區(qū)和其他 Transmission Control Protocol(TCP)參數。可以修改這些參數來分配更多的內存,從而改進網絡性能。設置內核參數的方法是通過 proc 接口,也就是通過讀寫 /proc 中的值。幸運的是,sysctl 可以讀取 /etc/sysctl.conf 中的值并根據需要填充/proc,這樣就能夠更輕松地管理這些參數。下面展示在互聯(lián)網服務器上應用于 Internet 服務器的一些網絡設置。?

#?Use?TCP?syncookies?when?needed net.ipv4.tcp_syncookies?=?1 #?Enable?TCP?window?scaling net.ipv4.tcp_window_scaling:?=?1 #?Increase?TCP?max?buffer?size net.core.rmem_max?=?16777216 net.core.wmem_max?=?16777216 #?Increase?Linux?autotuning?TCP?buffer?limits net.ipv4.tcp_rmem?=?4096?87380?16777216 net.ipv4.tcp_wmem?=?4096?65536?16777216 #?Increase?number?of?ports?available net.ipv4.ip_local_port_range?=?1024?65000

將這些設置添加到 /etc/sysctl.conf 的現(xiàn)有內容中。

第一個設置啟用 TCP SYN cookie。當從客戶機發(fā)來新的 TCP 連接時,數據包設置了SYN 位,服務器就為這個半開的連接創(chuàng)建一個條目,并用一個 SYN-ACK 數據包進行響應。在正常操作中,遠程客戶機用一個 ACK 數據包進行響應,這會使半開的連接轉換為全開的。

有一種稱為 SYN 泛濫(SYN flood) 的網絡***,它使 ACK 數據包無法返回,導致服務器用光內存空間,無法處理到來的連接。SYN cookie 特性可以識別出這種情況,并使用一種優(yōu)雅的方法保留隊列中的空間。大多數系統(tǒng)都默認啟用這個特性,但是確保配置這個特性更可靠。
啟用 TCP 窗口伸縮使客戶機能夠以更高的速度下載數據。TCP 允許在未從遠程端收到確認的情況下發(fā)送多個數據包,默認設置是最多 64 KB,在與延遲比較大的遠程客戶機進行通信時這個設置可能不夠。窗口伸縮會在頭中啟用更多的位,從而增加窗口大小。
后面四個配置項增加 TCP 發(fā)送和接收緩沖區(qū)。這使應用程序可以更快地丟掉它的數據,從而為另一個請求服務。還可以強化遠程客戶機在服務器繁忙時發(fā)送數據的能力。
最后一個配置項增加可用的本地端口數量,這樣就增加了可以同時服務的最大連接數量。
在下一次引導系統(tǒng)時,或者下一次運行 sysctl -p時,設置就會生效。

----------------------------------------------------------------------------------------

二、文件子系統(tǒng)的調優(yōu)
ulimit -a 用來顯示當前的各種用戶進程限制。
Linux對于每個用戶,系統(tǒng)限制其最大進程數。為提高性能,可以根據設備資源情況,
設置各linux 用戶的最大進程數,下面我把某linux用戶的最大進程數設為10000個:
ulimit -u 10000
對于需要做許多 socket 連接并使它們處于打開狀態(tài)的 Java 應用程序而言,
最好通過使用 ulimit -n xx 修改每個進程可打開的文件數,缺省值是 1024。
ulimit -n 4096 將每個進程可以打開的文件數目加大到4096,缺省為1024
其他建議設置成無限制(unlimited)的一些重要設置是:
數據段長度:ulimit -d unlimited
最大內存大小:ulimit -m unlimited
堆棧大小:ulimit -s unlimited
CPU 時間:ulimit -t unlimited
虛擬內存:ulimit -v unlimited

暫時地,適用于通過 ulimit 命令登錄 shell 會話期間。
永久地,通過將一個相應的 ulimit 語句添加到由登錄 shell 讀取的文件中, 即特定于 shell 的用戶資源文件,如:
1)、解除 Linux 系統(tǒng)的最大進程數和最大文件打開數限制:
vi /etc/security/limits.conf
# 添加如下的行
* soft noproc 11000
* hard noproc 11000
* soft nofile 4100
* hard nofile 4100
說明:* 代表針對所有用戶
noproc 是代表最大進程數
nofile 是代表最大文件打開數
2)、讓 SSH 接受 Login 程式的登入,方便在 ssh 客戶端查看 ulimit -a 資源限制:
a、vi /etc/ssh/sshd_config
把 UserLogin 的值改為 yes,并把 # 注釋去掉
b、重啟 sshd 服務:
/etc/init.d/sshd restart
3)、修改所有 linux 用戶的環(huán)境變量文件:
vi /etc/profile
ulimit -u 10000
ulimit -n 4096
ulimit -d unlimited
ulimit -m unlimited
ulimit -s unlimited
ulimit -t unlimited
ulimit -v unlimited
**************************************
有時候在程序里面需要打開多個文件,進行分析,系統(tǒng)一般默認數量是1024,(用ulimit -a可以看到)對于正常使用是夠了,但是對于程序來講,就太少了。
修改2個文件。
1./etc/security/limits.conf
vi /etc/security/limits.conf
加上:
* soft nofile 8192
* hard nofile 20480
2./etc/pam.d/login
session required /lib/security/pam_limits.so
**********
另外確保/etc/pam.d/system-auth文件有下面內容 session required /lib/security/$ISA/pam_limits.so 這一行確保系統(tǒng)會執(zhí)行這個限制。
***********
3.一般用戶的.bash_profile
#ulimit -n 1024功能檢測到這些連接,缺省情況下,在2小時之后丟掉. 2個小時的可能導致內存過度使用,降低性能。因此改成1800秒(30分鐘)是個更好的選擇:sysctl -w net.ipv4.tcp_keepalive_time=1800

--------------------------------------------------------------------------------------

三、網絡安全設置:
TCP SYN Flood ***
TCP SYN Flood是一種常見,而且有效的遠端(遠程)拒絕服務(Denial of Service)***方式,它透過一定的操作破壞TCP三次握手建立正常連接,占用并耗費系統(tǒng)資源,使得提供TCP服務的主機系統(tǒng)無法正常工作。由於TCP SYN Flood是透過網路底層對服務器Server進行***的,它可以在任意改變自己的網路IP地址的同時,不被網路上的其他設備所識別,這樣就給防范網路犯罪部門追查犯罪來源造成很大的困難。
系統(tǒng)檢查
一般情況下,可以一些簡單步驟進行檢查,來判斷系統(tǒng)是否正在遭受TCP SYN Flood***。
1.服務端無法提供正常的TCP服務。連接請求被拒絕或超時。
2.透過 netstat -an 命令檢查系統(tǒng),發(fā)現(xiàn)有大量的SYN_RECV連接狀態(tài)。
3.iptables的設置,引用自CU
防止同步包洪水(Sync Flood)
# iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
也有人寫作
#iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT --limit 1/s #限制syn并發(fā)數每秒1次,可以根據自己的需要修改
防止各種端口掃描
# iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
Ping洪水***(Ping of Death)
# iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
----------------------------------------------------------------------------------------------------------------------------
暫定步驟:
修改/etc/profile文件,加入:

???????ulimit?-u?10240ulimit?-n?4096ulimit?-d?unlimitedulimit?-m?unlimitedulimit?-s?unlimitedulimit?-t?unlimitedulimit?-v?unlimited

修改/etc/rc.d/rc.local,加入:

???????echo?‘131072′?>?/proc/sys/fs/file-maxecho?‘131072′?>?/proc/sys/fs/inode-max

(1G內存值修改成:65535 2G內存值修改成:131072 4G內存值修改成:262144)
修改/etc/sysctl.conf文件,加入:

???????net.core.rmem_default?=?8388608net.core.rmem_max?=?8388608net.core.wmem_default?=?8388608net.core.wmem_max?=?8388608net.ipv4.tcp_timestamps?=?0net.ipv4.tcp_sack?=1net.ipv4.tcp_window_scaling?=?1net.core.netdev_max_backlog=3000#Modify?i-nodesys.fs.file-max=?65535sys.fs.inode-max=?65535#Set?System?Memoryvm.bdflush="30?500?0?0?500?3000?60?20?0"vm.kswapd="1024?32?64"#Disable?HackAttack!net.ipv4.conf.eth0.accept_source_route=0net.ipv4.conf.lo.accept_source_route=0net.ipv4.conf.default.accept_source_route=0net.ipv4.conf.all.accept_source_route=0net.ipv4.conf.lo.accept_redirects=0net.ipv4.conf.all.accept_redirects=0net.ipv4.conf.eth0.accept_redirects=0net.ipv4.conf.default.accept_redirects=0net.ipv4.conf.lo.secure_redirects=0net.ipv4.conf.all.secure_redirects=0net.ipv4.conf.eth0.secure_redirects=0net.ipv4.conf.default.secure_redirects=0net.ipv4.conf.eth0.send_redirects=0net.ipv4.conf.lo.send_redirects=0net.ipv4.conf.default.send_redirects=0net.ipv4.conf.all.send_redirects=0net.ipv4.tcp_syncookies=1net.ipv4.icmp_echo_ignore_broadcasts=1net.ipv4.icmp_ignore_bogus_error_responses=1#Web?Serversnet.ipv4.tcp_tw_reuse=1net.ipv4.tcp_tw_recycle=1net.ipv4.tcp_fin_timeout=30net.ipv4.tcp_keepalive_time=1800net.ipv4.core.wmem_max=16777216net.ipv4.core.rmem_max=16777216net.ipv4.tcp_rmem="4096?87380?8388608"net.ipv4.tcp.wmem="4096?87380?8388608"net.ipv4.tcp_max_syn_backlog=8192

防火墻安全:

iptables?-A?FORWARD?-p?tcp?--syn?-m?limit?--limit?1/s?-j?ACCEPT

也有人寫作
???

iptables?-A?INPUT?-p?tcp?--syn?-m?limit?--limit?1/s?-j?ACCEPT?--limit?1/s

限制syn并發(fā)數每秒1次,可以根據自己的需要修改
防止各種端口掃描

iptables?-A?FORWARD?-p?tcp?--tcp-flags?SYN,ACK,FIN,RST?RST?-m?limit?--limit?1/s?-j?ACCEPT

Ping洪水***(Ping of Death)??

iptables?-A?FORWARD?-p?icmp?--icmp-type?echo-request?-m?limit?--limit?1/s?-j?ACCEPT

備注說明:(相對比較激進的網絡參數調整)

???????#?Use?TCP?syncookies?when?needednet.ipv4.tcp_syncookies?=?1#?Enable?TCP?window?scalingnet.ipv4.tcp_window_scaling:?=?1#?Increase?TCP?max?buffer?sizenet.core.rmem_max?=?16777216net.core.wmem_max?=?16777216#?Increase?Linux?autotuning?TCP?buffer?limitsnet.ipv4.tcp_rmem?=?4096?87380?8388608net.ipv4.tcp_wmem?=?4096?65536?8388608#?Increase?number?of?ports?availablenet.ipv4.ip_local_port_range?=?1024?65000

----------------------------------------------------------------------------------------------------------------------------
四、LINUX安全設置步驟:
1.刪除所有那些不能在你系統(tǒng)上使用的默認用戶和組賬戶: lp,sync,shutdown,halt, news, uucp, operator, games, gopher ROOT自動從shell注銷
編輯你的配置文件”vi /etc/profile”,在某個地方加入如下行,

“HISTFILESIZE=”TMOUT=3600
我們?yōu)樽兞俊盩MOUT=”輸入的這個值使用秒表示的、代表一個小時(60*60=3600秒)。如果你將此行加入你的“/etc/profile” 文件,那么在一小時的非活動狀態(tài)之后將要系統(tǒng)里的所有用戶自動注銷。你可以在用戶私人的”。bashrc”文件里面設置這個變量,可以在一個確定的時間以后自動注銷他們。
2.禁止并且卸載所有沒有用的服務
你必須禁止別切卸載所有你不用的的服務,那樣的話,你就能少擔心一些。看看你的”/etc/inetd.conf”文件, 用注釋的方法禁用(在一行的開始加個#),然后給inetd進程發(fā)送一個SIGHUP命令去更新到當前的”inetd.conf”文件。這樣做:
第一步把”/etc/inetd.conf”更改許可權限成600,那樣的話,就只有root可以讀和寫。[Root@kapil /]# chmod 600 /etc/inetd.conf
第二步確保”/etc/inetd.conf”的所有者是root。
第三步編輯inetd.conf文件(vi /etc/inetd.conf),并且禁止一些服務,就像:ftp, telnet, shell, login, exec, talk, ntalk, imap, pop-2, pop-3, finger, auth等等,除非你打算用它。關閉這些服務就降低一些風險。
第四步給你的inetd進程發(fā)送一個HUP信號[root@kapil /]# killall -HUP inetd
第五步設置”/etc/inetd.conf”文件為不可更改,使用 chattr 命令,這樣的話,沒人能修改那個文件。*簡單的設置文件為不可更改,執(zhí)行如下命令:
[root@kapil /]# chattr +i /etc/inetd.conf
這將防止對”inetd.conf”文件的任何更改(意外的更改或者其他更改)。只有超級用戶root能設置或者清除這個文件屬性。修改inetd.conf *簡單的取消不可更改的設置,執(zhí)行如下命令:
[root@kapil /]# chattr -i /etc/inetd.conf
3.免疫”/etc/services”文件
你必須免疫 “/etc/services” 文件,防止未經授權的刪除、增加服務。
免疫 “/etc/services” 文件,使用命令:
[root@kapil /]# chattr +i /etc/services
禁止Control-Alt-Deletc鍵盤關機命令
在你的”/etc/inittab”文件里面注釋掉如下的行(用一個”#”)。這樣做,編輯inittab文件(vi /etc/inittab),更換:
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
讀入:#ca::ctrlaltdel:/sbin/shutdown -t3 -r now
現(xiàn)在,按照如下提示輸入,讓更改生效:
[root@kapil /]# /sbin/init q 為腳本文件整理”/etc/rc.d/init.d”下的權限整理腳本文件的許可權限,可靠的開始和結束所有你需要在引導時運行的常態(tài)進程,這樣做:
[root@kapil/]# chmod -R 700 /etc/rc.d/init.d/*
這意味著只有root可以被允許讀,寫,和執(zhí)行目錄里面的腳本文件。

4.隱藏你的系統(tǒng)信息
默認狀態(tài)下,當你登錄到linux機器時,他告訴你Linux分布商的名字,版本,核心版本和服務器名字。這對一個駭客來說從你的服務器得到這些信息足夠了以必須立刻用一個”Login:”提示符提示用戶。
第一步
這樣做,編輯”/etc/rc.d/rc.local”文件,放置”#”在如下行的前面。

#?This?will?overwrite?/etc/issue?at?every?boot.?So,?make?any?changes?you #?want?to?make?to?/etc/issue?here?or?you?will?lose?them?when?you?reboot. #echo?“”?>;?/etc/issue #echo?“$R”?>;>;?/etc/issue #echo?“Kernel?$(uname?-r)?on?$a?$(uname?-m)”?>;>;?/etc/issue # #cp?-f?/etc/issue?/etc/issue.net #echo?>;>;?/etc/issue

第二步
然后,刪除如下文件:在”/etc/”目錄下的”issue.net” 和 “issue”:
[root@kapil /]# rm -f /etc/issue
[root@kapil /]# rm -f /etc/issue.net
5.禁止未用的 SUID/SGID 程序
一個常規(guī)用戶如果設置為SUID root,將能夠作為root運行程序。一個系統(tǒng)管理員必須最小化使用這些 SUID/GUID程序, 而且禁止那些不需要的程序。
從root擁有的程序里發(fā)現(xiàn)所有有`s’ 位的程序,用此命令:
[root@kapil]# find / -type f \( -perm -04000 -o -perm -02000 \) \-exec ls -lg {} \;
* 在被選中的程序上禁止suid 位,鍵入如下命令:
[root@kapil /]# chmod a-s [program]
6.關閉ipv6
vi /etc/modprobe.conf,在文件中添加以下兩行
alias net-pf-10 off
alias ipv6 off



轉載于:https://blog.51cto.com/nanchunle/1658988

總結

以上是生活随笔為你收集整理的LINUX性能调优方法总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。