ulimit修改最大進(jìn)程數(shù)參數(shù) 怎么計(jì)算一臺(tái)服務(wù)器最多支持連接數(shù)?
怎么計(jì)算一臺(tái)服務(wù)器最多支持連接數(shù)?1.在linux下,一個(gè)進(jìn)程最多只能打開1024個(gè)文件,因此在這種默認(rèn)配置下,最多可以并發(fā)數(shù)千個(gè)TCP連接。并且通過臨時(shí)改裝:ulimit -n 1000000,可以
怎么計(jì)算一臺(tái)服務(wù)器最多支持連接數(shù)?
1.在linux下,一個(gè)進(jìn)程最多只能打開1024個(gè)文件,因此在這種默認(rèn)配置下,最多可以并發(fā)數(shù)千個(gè)TCP連接。并且通過臨時(shí)改裝:ulimit -n 1000000,可以達(dá)到100萬(wàn)個(gè)TCP連接。但這種臨時(shí)修改只對(duì)當(dāng)前登錄用戶的當(dāng)前使用環(huán)境有效,在系統(tǒng)重啟或用戶退出后無效。
2.端口限制:在操作系統(tǒng)上,1024以下的端口號(hào)是系統(tǒng)保留的,1024到65535的端口號(hào)是用戶使用的。因?yàn)槊總€(gè)TCP連接都有一個(gè)端口號(hào),所以我們最多可以有超過60,000個(gè)并發(fā)連接。
3.因此,tcp連接的最大數(shù)量是客戶端ip ×客戶端端口。對(duì)于ipV4,最大tcp連接數(shù)約為2的32次方(IP數(shù))×2的16次方(端口號(hào)),也就是說每臺(tái)服務(wù)器的最大tcp連接數(shù)約為2的48次方。
4.以上給出的結(jié)論都是理論上的單機(jī)TCP并發(fā)連接。實(shí)際上,單機(jī)并發(fā)連接數(shù)必然受到硬件資源(內(nèi)存)和網(wǎng)絡(luò)資源(帶寬)的限制,至少目前能達(dá)到幾十萬(wàn)級(jí)別的并發(fā)。
高并發(fā)得時(shí)候服務(wù)器壓力大,是內(nèi)存的問題還是cpu的問題?
你好,我 我是一名Java開發(fā)人員。歡迎關(guān)注我關(guān)于通信行業(yè)代碼的頭條。謝謝大家!
首先,你的問題描述了一些問題。你的問題應(yīng)該是Web應(yīng)用部署在Linux下的Tomcat容器中,高并發(fā)時(shí)服務(wù)器壓力很大。線程的數(shù)量與您的Web程序有關(guān),而與Tomcat無關(guān)。如果你懷疑線程問題,你必須檢查你的程序。這里我告訴你一個(gè)檢查的方法(jstack的jvm性能調(diào)優(yōu)也是我在工作中實(shí)際遇到的問題)。
如何使用jstack找到消耗CPU最多的線程并定位代碼jstack是JVM自帶的一個(gè)堆棧跟蹤工具。根據(jù)棧信息,我們可以定位具體的代碼,因此它被廣泛應(yīng)用于JVM性能調(diào)優(yōu)。以下是具體操作流程。
1.使用top命令檢查L(zhǎng)inux服務(wù)器的CPU、內(nèi)存和IO的使用情況。
如果服務(wù)器上的壓力大,是某個(gè)進(jìn)程占用CPU資源太多造成的(這個(gè)問題看java進(jìn)程),在頂視圖中可以清楚的看到,高的時(shí)候會(huì)超過100%。
2.找出java進(jìn)程的PID。
命令:ps -ef|grep java
進(jìn)入java進(jìn)程的PID21711。
3.找出進(jìn)程中消耗CPU最多的線程。
根據(jù)步驟2中的PID,找出進(jìn)程中消耗CPU最多的線程。您可以使用以下三個(gè)命令:
ps -Lfp pid
ps -mp pid -o線程,tid,時(shí)間
頂部高壓管道儀表流程圖
TIME記錄每個(gè)線程消耗CPU的時(shí)間,其中PID為21742的線程消耗的時(shí)間最多。
4.使用jstack命令輸出進(jìn)程的堆棧信息,并定位相應(yīng)的代碼。
因?yàn)閖stack輸出的堆棧信息中的線程PID都是十六進(jìn)制的,所以我們需要把第三步中最耗時(shí)的線程21742轉(zhuǎn)換成十六進(jìn)制。我們可以這樣做:
printf %x
21742
21742的十六進(jìn)制值是54ee,將在下面使用。如果你真的可以 t寫,就用計(jì)算器(操作時(shí)輸入calc彈出)。
輸出堆棧信息的Jstack命令:
jstack 21711 | grep 54ee
天哪,原來問題出在ActiveMQ上。當(dāng)Web應(yīng)用程序與ActiveMQ通信時(shí),這是一個(gè)問題。查了一下MQ,發(fā)現(xiàn)MQ死了,不能 t在IE中打開管理控制臺(tái)來訪問MQ。MQ重啟后一切正常。
許多程序員喜歡開發(fā)新的需求。;不喜歡修改bug,尤其是一些疑難雜癥。所以很多人對(duì)JVM性能調(diào)優(yōu)知之甚少。事實(shí)上,JVM性能調(diào)優(yōu)是Java中非常重要的知識(shí)點(diǎn),我們必須要了解,尤其是一些JVM調(diào)優(yōu)工具。
如果你有什么疑問,或者有更好的知識(shí)和經(jīng)驗(yàn),不妨分享出來,共同學(xué)習(xí),共同進(jìn)步。謝謝大家!