更新時間:2021-08-13 10:44:51 來源:動力節點 瀏覽1059次
眾所周知,Linux在默認參數s下不能很好地支持高并發,主要受單個進程最大打開文件數s、內核TCP參數和IO事件分配機制的限制。下面從幾個方面調整Linux系統支持高并發環境。
如果沒有,請關閉或卸載iptables防火墻并阻止內核加載iptables模塊。這些模塊會影響并發性能。
每個進程的最大打開文件數限制
在一般的發行版中,單個進程最多可以打開1024個文件,遠遠不能滿足高并發的要求。調整過程如下:在?輸入,提示:
# ulimit –n 65535
設置root可以為單個進程打開的最大文件數為65535。如果系統回顯類似“不允許操作”,則說明上述限制修改失敗。實際上, 中指定的值超出了 Linux 系統對用戶打開文件數的軟或硬限制。因此,有必要修改Linux系統對打開文件數的軟硬限制。
第一步是修改limits.conf文件并添加:
# vim /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
其中'*'表示修改了所有用戶的限制;soft or hard 指定是修改軟限制還是硬限制;65536 指定要修改的新限制值,即最大打開文件數(請注意軟限制值應小于或等于硬限制)。修改后保存文件。
第二步:修改/etc/pam.d/login文件,在文件中加入如下一行:
# vim /etc/pam.d/login
sessionrequired /lib/security/pam_limits.so
這告訴Linux在用戶登錄后應該調用PAM_limits.so模塊來設置用戶可以使用的資源數量的最大限制(包括用戶可以打開的最大文件數),以及PAM_limits。所以模塊會從 /etc/security/limits.conf 文件中讀取配置來設置這些限制。修改后保存此文件。
第三步:檢查Linux系統級別的最大打開文件數。使用以下命令:
# cat/proc/sys/fs/file-max
32568
這說明可以同時打開的最大文件數(包括所有用戶打開的文件總數)為32568,這是Linux的系統級硬限制,也是所有用戶級打開的文件數限制文件不應超過此值。
一般這個系統級硬限制是Linux系統啟動時根據系統硬件資源狀況計算出的同時打開文件的最佳最大數量。如果沒有特殊需要,則不應修改此限制,除非您想為用戶級別打開文件限制設置一個超過此限制的值。改變這個硬限制的方法是修改 /etc/sysctl.conf 文件內的 fs.file -Max = 131072,這是強制 Linux 在啟動后將系統級打開文件的硬限制設置為 131072。修改后保存此文件。
完成上述步驟后,重新啟動系統。一般情況下,您可以將Linux系統允許指定用戶的單個進程同時打開的最大文件數設置為指定值。
如果使用 ulimit -n 命令檢查重啟后用戶可以打開的文件數限制仍然低于上述步驟中設置的最大值,這可能是因為使用了 ulimit -n 命令用戶登錄腳本 /etc/profile 限制了用戶可以同時打開的文件數量。
當用戶可以同時打開的最大文件數被 ulimit -n 修改后,新修改的值只能小于或等于 ulimit -n 上次設置的值,因此無法增加使用此命令限制值。
因此,如果存在上述問題,只能打開/etc/profile腳本文件,查看文件中是否使用了ulimit -n來限制用戶可以同時打開的最大文件數。如果找到,則刪除該行命令或將其設置值更改為適當的值,然后保存文件。用戶可以注銷并重新登錄系統。
通過以上步驟,對于支持高并發TCP連接處理的通信處理程序,解除了系統對打開文件數的限制。
在Linux系統下,TCP連接斷開后,在釋放端口之前,會保持一定的等待狀態。當并發請求過多時,會產生大量的時間_等待狀態的連接如果不能及時斷開,會占用大量的端口資源和服務器資源。這時候我們可以優化TCP內核參數來設置time_等待狀態的端口被清除。
以上就是動力節點小編介紹的"Linux高并發服務器調優",希望對大家有幫助,想了解更多可查看Java在線學習。動力節點在線學習教程,針對沒有任何Java基礎的讀者學習,讓你從入門到精通,主要介紹了一些Java基礎的核心知識,讓同學們更好更方便的學習和了解Java編程,感興趣的同學可以關注一下。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習