回覆列表
  • 1 # xinghunlan

    這是一個綜合性的問題吧,各方面的因素都有吧,但是最容易先掛掉的是資料庫,因為持久化操作是最慢,所以一般都會做快取啥的。

  • 2 # 維啟

    是伺服器哪裡壓力大?cpu高還是記憶體不足都可以監控!你說的伺服器是應用端的伺服器還是什麼?具體沒有說明白,無法具體解答

  • 3 # 偶爾來逛逛隨便來瞧瞧

    你這問題沒法回答,cpu/記憶體/io/頻寬/資料庫/容器配置有誤等等,任何一樣都會拖垮服務,具體問題具體分析

  • 4 # 順十三

    高併發需要注意六種情況:

    一:cpu算力不夠。

    二:記憶體吃緊。

    三:硬碟讀寫忙不過來。

    四:網路頻寬不足或涉及的內網通訊延遲。

    五:資料庫操作。

    六:電壓不穩。

  • 5 # 小逗電競

    首先,你的這個問題描述的有些問題,你的問題應該是Web應用部署在Linux下的Tomcat容器中,在高併發的時候伺服器壓力大。執行緒開的多少跟你的Web程式有關,跟Tomcat無關,如果你懷疑執行緒的問題,你得檢查你的程式,下面我告訴你一個方法,可以排查(jstack之jvm效能調優,也是我在工作中實際遇到的一個問題)。

    如何用jstack找出最耗CPU的執行緒並定位程式碼

    jstack是JVM自帶的一個堆疊跟蹤工具。根據堆疊資訊我們可以定位到具體程式碼,所以它在JVM效能調優中使用得非常多,下面是具體操作過程。

    1、用top命令檢視Linux伺服器CPU、記憶體及IO的使用情況

    如果伺服器壓力大,透過是由於某個程序佔用CPU資源過高導致的(針對這個問題,你看下java程序),可以在top視圖裡很清晰的看到,高的時候會超過百分百。

    2、找出java程序的PID

    命令:ps -ef|grep java

    輸入的java程序的PID=21711

    3、找出程序內最耗CPU的執行緒

    根據第2步中的PID找出程序內最耗CPU的執行緒,可以用以下三條命令:

    ps -Lfp pidps -mp pid -o THREAD, tid, timetop -Hp pid

    TIME記錄了各執行緒耗費CPU的時間,其中PID為21742的執行緒耗時最多。

    4、用jstack命令輸出程序的堆疊資訊,並定位相應程式碼

    由於jstack輸出的堆疊資訊裡,執行緒PID全是16進位制,所以,我們需求將第三步最耗時的執行緒21742轉為16進定,可以這麼做:

    printf "%x\n" 21742

    得到21742的十六進位制值為54ee,下面會用到,實在不會寫,就用計算器(執行裡輸入:calc即可彈出)

    jstack 輸出堆疊資訊的命令:

    jstack 21711 | grep 54ee

    我的天,原來問題出在ActiveMQ上,是Web應用跟ActiveMQ通訊時出現了問題,透過檢查MQ後才發現,MQ掛死了,在IE裡訪問MQ的管理控制檯都打不開,MQ重啟後一切正常。

    很多程式設計師都是喜歡開發新的需求,不喜歡修改BUG,尤其是一些疑難雜症。所以很多人對JVM效能調優相關的東西知道的很少。其實,JVM效能調優是Java中非常重要的知識點,我們要必須瞭解,尤其是一些JVM調優工具。

  • 6 # 專利局的三級小職員

    高併發下最大的壓力首先是 來自於 IO的壓力,也就是磁碟讀寫的壓力最大,這種情況下,第一策略就是 透過減少IO來降低CPU的使用~~~~ 如是說。

    如果是 CPU密集型的 ,就要考慮 升級硬體了~~ 例如 擴容CPU 核心數量。 個人建議

  • 7 # 佐羅之劍1515

    搞Diy硬體的思維不適合用於此,真正的問題點在於系統整合方案合理性和系統瓶頸點分析方法不合適,先最佳化程式碼設計評估系統併發效能是否做到極致,再進行硬體資源需求分析和規劃。

  • 8 # 坐雲觀潮

    看到這樣的問題想吐槽,瀏覽一下大家根據自己經驗做出的回答又挺感動。

    “高併發‘得’時候”,估計大家都不忍心指出這樣的錯別字,可是,我覺著作為開發人員,出現這樣的bug是不應該的,你的一次提交,就是一次自己產品的上線啊,細心一點,嚴謹一點好嗎?

    “伺服器壓力大”,怎麼知道的伺服器壓力大?表現如何?在反映伺服器壓力的時候,要從CPU、磁碟IO、記憶體佔用率、網路IO等方面描述,才能支撐你的問題,別人才好回答。

    “是記憶體問題還是CPU問題”,從問題來看,真的無法判斷。

    不嚴謹,不講邏輯的提問,還是不回答為好。

  • 9 # 小小湯湯

    如果兩者只能選其一,先是記憶體,再是CPU。

    高併發處理的是資料,程式先進行讀寫,再進行運算(運算由CPU負責)。如果資料的讀寫速度都跟不上,還談什麼運算。

    在一般情況下,資料是儲存在硬碟上的,高併發時,資料的讀取壓力來至伺服器IO產生的壓力(因為一臺伺服器的IO是固定的),所以,讀取資料時:事先將一些熱資料寫入到記憶體,由程式直接到記憶體中去讀取資料。寫資料時:先將資料寫入到記憶體中,再由程式從記憶體中讀取資料,再寫入到資料庫中。

    在進行高併發處理時,記憶體很重要,所以也就要求伺服器不能斷電,不然,資料丟失一切都完了。

    我印象比較深的就是,GOOGLE是一個什麼專案,因為頁面的訪問量比較大,所以,在專案執行前,都將頁面的所有圖片文字這資訊全部放到記憶體中的,不然,訪問量大了,會卡死。

  • 中秋節和大豐收的關聯?
  • 公輸中的楚王是誰?