sysctl



redhat%20as4%20高并发高负载系统优化参数配置
ulimit -n 8192                                         ##單一進程允許打開的最大文件數
echo 65532 > /proc/sys/fs/file-max                     ##Linux系統級的最大打開文件數限制

----------以下配置在如下路徑/proc/sys/net/ipv4---------------

net.ipv4.ip_local_port_range = 1024 65000              ##將系統對本地端口範圍限制設置為1024~65000之間
net.ipv4.ip_conntrack_max = 102400                     ##系統對最大跟蹤的TCP連接數限制設置為10240
net.ipv4.tcp_syncookies = 1                            ##表示開啟SYN Cookies。當出現SYN等待隊列溢出時,啟用cookies來處理,可防範少量SYN攻擊,默認為0,表示關閉;
net.ipv4.tcp_keepalive_time = 7200                     ##tcp_keepalive_time 值控制 TCP/IP 嘗試驗證空閒連接是否完好的頻率。如果這段時間內沒有活動,則會發送保持活動信號。 如果網絡工作正常,而且接收方是活動的,它就會響應。 如果需要對丟失接收方敏感,換句話說,需要更快地發現丟失了接收方,請考慮減小這個值。 如果長期不活動的空閒連接出現次數較多,而丟失接收方的情況出現較少,您可能會要提高該值以減少開銷。
net.ipv4.tcp_max_syn_backlog = 1024                    ##增大隊列SYN最大半連接數、防止SYN攻擊、增加未完成連接隊列(q0)的最大長度
net.ipv4.tcp_tw_reuse = 1                              ##表示開啟重用。允許將TIME-WAIT sockets重新用於新的TCP連接,默認為0,表示關閉;
net.ipv4.tcp_tw_recycle = 1                            ##表示開啟TCP連接中TIME-WAIT sockets的快速回收,默認為0,表示關閉。
net.ipv4.neigh.default.gc_thresh3 = 2048
net.ipv4.neigh.default.gc_thresh2 = 1024
net.ipv4.neigh.default.gc_thresh1 = 256
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.forwarding = 1
net.ipv4.conf.default.proxy_arp = 0                    ##關閉ARP代理
net.core.netdev_max_backlog = 2048                     ##該文件表示在每個網絡接口接收數據包的速率比內核處理這些包的速率快時,允許送到隊列的數據包的最大數目。
net.core.dev_weight = 64
net.ipv4.tcp_rmem = 4096 87380 16777216                ##該文件包含3個整數值,分別是:min,default,max Min:為TCP socket預留用於接收緩衝的內存數量,即使在內存出現緊張情況下TCP socket都至少會有這麼多數量的內存用於接收緩衝。Default:為TCP socket預留用於接收緩衝的內存數量,默認情況下該值影響其它協議使用的 net.core.wmem中default的值。該值決定了在tcp_adv_win_scale、tcp_app_win和tcp_app_win的默認值情況下,TCP 窗口大小為65535。Max:為TCP socket預留用於接收緩衝的內存最大值。該值不會影響 net.core.wmem中max的值,今天選擇參數 SO_SNDBUF則不受該值影響。缺省設置:4096 87380 174760
net.ipv4.tcp_wmem = 4096 65536 16777216                ##該文件包含3個整數值,分別是:min,default,max Min:為TCP socket預留用於發送緩衝的內存最小值。每個TCP socket都可以使用它。Default:為TCP socket預留用於發送緩衝的內存數量,默認情況下該值會影響其它協議使用的net.core.wmem中default的值,一般要低於net.core.wmem中default的值。Max:為TCP socket預留用於發送緩衝的內存最大值。該值不會影響net.core.wmem_max,今天選擇參數SO_SNDBUF則不受該值影響。默認值為 128K。缺省設置:4096 16384 131072
net.ipv4.tcp_rfc1337 = 1                               ##這個開關可以啟動對於在RFC1337中描述的「tcp的time-wait暗殺危機」問題的修復。啟用後,內核將丟棄那些發往time-wait狀態TCP套接字的RST包。卻省為0。
net.ipv4.tcp_sack = 0                                  ##該文件表示是否啟用有選擇的應答(Selective Acknowledgment),這可以通過有選擇地應答亂序接收到的報文來提高性能(這樣可以讓發送者只發送丟失的報文段);(對於廣域網通信來說)這個選項應該啟用,但是這會增加對 CPU 的佔用。
net.ipv4.tcp_fin_timeout = 20                          ##timeout_timewait 值確定了在 TCP/IP 可釋放已關閉的連接並復用其資源之前,必須等待的時間。關閉和釋放之間的時間間隔稱為 TIME_WAIT 狀態或最長分段生命週期的兩倍(2MSL)狀態。 在此期間,重新打開客戶機和服務器之間的連接比新建一個連接的開銷要小。 通過減小該項的值,TCP/IP 可更快地釋放已關閉的連接,並可為新連接提供更多的資源。如果由於多個連接處於 TIME_WAIT 狀態導致吞吐量較低,從而正在運行的應用程序需要快速釋放連接、創建新的連接或是進行調整,請調整這個參數。對於本端斷開的socket連接,TCP保持在FIN-WAIT-2狀態的時間。對方可能會斷開連接或一直不結束連接或不可預料的進程死亡。默認值為 60 秒。過去在2.2版本的內核中是 180 秒。您可以設置該值,但需要注意,如果您的機器為負載很重的web服務器,您可能要冒內存被大量無效數據報填滿的風險,FIN-WAIT-2 sockets 的危險性低於 FIN-WAIT-1,因為它們最多只吃 1.5K的內存,但是它們存在時間更長。另外參考 tcp_max_orphans。
net.ipv4.tcp_keepalive_probes = 5                      ##tcp_keepalive_probes 值定義了 TCP/IP 通過現有連接重新發送未返回應答的保持活動的消息次數。如果您的網絡性能很差,可能需要提高該值以保持有效的通信。 如果您的網絡性能很好,可以減小該值以減少驗證接收方是否丟失所花費的時間。
net.ipv4.tcp_max_orphans = 32768                       ##系統所能處理不屬於任何進程的TCP sockets最大數量。假如超過這個數量,那麼不屬於任何進程的連接會被立即reset,並同時顯示警告信息。之所以要設定這個限制,純粹為了抵禦那些簡單的 DoS 攻擊,千萬不要依賴這個或是人為的降低這個限制。
net.core.optmem_max = 20480                            ##該文件表示每個套接字所允許的最大緩衝區的大小。
net.core.rmem_default = 16777216                       ##該文件指定了接收套接字緩衝區大小的缺省值(以字節為單位)。
net.core.rmem_max = 16777216                           ##該文件指定了接收套接字緩衝區大小的最大值(以字節為單位)。
net.core.wmem_default = 16777216                       ##該文件指定了發送套接字緩衝區大小的缺省值(以字節為單位)。
net.core.wmem_max = 16777216                           ##該文件指定了發送套接字緩衝區大小的最大值(以字節為單位)。
net.core.somaxconn = 1024                              ##調高系統同時發起並發TCP連接數;可能需要提高連接儲備值,以應對大量突發入局連接請求的情況。如果同時接收到大量連接請求,使用較大的值會提高受支持的暫掛連接的數量,從而可減少連接失敗的數量。
net.ipv4.tcp_orphan_retries = 1                        ##在近端丟棄TCP連接之前,要進行多少次重試。默認值是 7 個,相當於 50秒–16分鐘,視 RTO 而定。如果您的系統是負載很大的web服務器,那麼也許需要降低該值,這sockets 可能會耗費大量的資源。另外參考tcp_max_orphans。
net.ipv4.tcp_max_tw_buckets = 18000                    ##系統同時保持timewait套接字的最大數量。系統在同時所處理的最大timewait sockets 數目。如果超過此數的話,time-wait socket 會被立即砍除並且顯示警告信息。之所以要設定這個限制,純粹為了抵禦那些簡單的 DoS 攻擊,千萬不要人為的降低這個限制,不過,如果網絡條件需要比默認值更多,則可以提高它(或許還要增加內存)。
net.ipv4.ip_forward = 0                                ##該文件表示是否打開IP轉發。0,禁止1,轉發
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.conf.all.rp_filter = 1                        ##開啟IP源地址驗證,防止IP地址欺騙,在任何情況下都應開啟,默認關閉
kernel.sysrq = 1                                       ##啟用SsyRq
net.ipv4.conf.default.send_redirects = 1               ##Linux的路由重定向
net.ipv4.conf.all.send_redirects = 0                   ##Linux的路由重定向 0為關閉

less /etc/security/limits.conf
* soft nofile 32768
* hard nofile 32768
###重啟後用戶的最大打開文件數就變成 32768 了,當然你也可以看情況再加大。

Tomcat 部分配置:

    <Connector port="6060" maxHttpHeaderSize="8192"
               maxThreads="1200" minSpareThreads="50" maxSpareThreads="200"
               enableLookups="false" redirectPort="8443" acceptCount="1200"
               connectionTimeout="30000" disableUploadTimeout="true" minProcessors="100" maxProcessors="1200"/>
Comments