程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java JVM設置對性能的影響

Java JVM設置對性能的影響

編輯:關於JAVA

一台後端server,OS為Slackware 8.1,裝了tomcat 4.1.30,近期在繁忙時期經常會死機,死狀就是"Java.lang.OutOfMemoryError: unable to create new native thread".是tomcat創建不了新的線程來應答請求了。於是我搭了一個環境專門來測試這個問題。內存為2G,CPU為四顆2.8G,tomcat 4.1.30,寫一個最簡單的JSP頁面,如下:

  代碼

  <%

  try

  {

  Thread.sleep(30000);

  out.println("fuck");

  } catch (InterruptedException e) {

  e.printStackTrace();

  } %>

  然後開Jmetor來壓,同時開jconsole來監測tomcat的情況,並不斷調整XMX,XMS,XSS這三個參數,得出下表:

  XMX XMS XSS down時的tomcat thread數

  500M 500M 128K 642

  800M 800M 64K 485

  1024M 1024M 64K 374

  1024M 1024M 128K 374

  1024M 1024M 512K 371

  根據該表,可以看出,隨XMX,即是分配給JVM的內存數越大,tomcat所能開的thread數就越小,而Xss這個參數幾乎不影響任何測試結果。我猜想tomcat開線程是使用Linux的內存,而不是JVM的內存。當分配給JVM的內存越大,操作系統所能用於分配的內存就越小,於是所能開的線程數就越小。

  大家有什麼解決方案嗎?難道大家都沒遇過這個問題?我的設想是可能Linux初始每個進程(也就是tomcat開的線程)有一個初始大小,這應該是一個內核參數來的,應該把它調小就可以了,但我不知道怎樣去調。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved