2012-02-10 52 views
6

Hãy giúp tôi với một tình huống. Tôi có CentOS với RAM 4 GB với Tomcat được cấu hình với bộ nhớ khoảng 1500MB. Tại một số điểm máy của tôi bị treo cứng khi nó đạt đến Chủ đề tối đa được định cấu hình trên đó, tức là 200. Chúng tôi phải khởi động lại máy chủ ứng dụng để hoạt động trở lại. Các thông số là:Các vấn đề về bộ nhớ JVM

JAVA_OPTS="-server -Xss128k -Xms2048m -Xmx2048m -XX:MaxPermSize=512m -XX:NewRatio=3 -XX:SurvivorRatio=6 -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:CMSInitiatingOccupancyFraction=80 -Dfile.encoding=UTF8" 

Chi tiết ghi nhớ jvm được dán bên dưới. Heap

 PSYoungGen      total 435456K, used 73027K [0x00000000e0c00000, 0x00000000fb580000, 0x0000000100000000) 
  eden space 435200K, 16% used [0x00000000e0c00000,0x00000000e5350c70,0x00000000fb500000) 
  from space 256K, 0% used [0x00000000fb540000,0x00000000fb540000,0x00000000fb580000) 
  to   space 256K, 88% used [0x00000000fb500000,0x00000000fb538600,0x00000000fb540000) 
 PSOldGen        total 741376K, used 132680K [0x00000000a2400000, 0x00000000cf800000, 0x00000000e0c00000) 
  object space 741376K, 17% used [0x00000000a2400000,0x00000000aa592030,0x00000000cf800000) 
 PSPermGen       total 22912K, used 22880K [0x0000000092400000, 0x0000000093a60000, 0x00000000a2400000) 
  object space 22912K, 99% used [0x0000000092400000,0x0000000093a58088,0x0000000093a60000) 

Code Cache  [0x00002aaaab021000, 0x00002aaaab311000, 0x00002aaaae021000) 
 total_blobs=1033 nmethods=670 adapters=317 free_code_cache=47372736 largest_free_block=12096 

0x00002aaab41b7800 JavaThread ""http-apr-80"-exec-214" daemon [_thread_blocked, id=2636, stack(0x0000000043b06000,0x0000000043b27000)] 
+0

Có một thành phần lập trình cho câu hỏi này hay là hoàn toàn về cấu hình Tomcat? – NPE

+0

Chúng tôi cũng đã kiểm tra các thành phần phụ thuộc vào lập trình. Phân tích các đối tượng được tạo bằng cách sử dụng các bãi đống và jhat. Tôi khá không chắc chắn về điều chỉnh kích thước bộ nhớ được xác định và GC. Vì vậy, muốn kiểm tra lại nó với những người khác. – Ashutosh

+0

Tạo một kết xuất chuỗi trong khi nó bị kẹt để xem chúng đang làm gì. Có lẽ có một số deadlocks. Bạn có thể sử dụng jconsole để thu thập thông tin này. – mrembisz

Trả lời

4

Tôi không nghĩ rằng bạn có một vấn đề bộ nhớ ở đây.

Tôi nghĩ rằng bạn chỉ chạy ra khỏi chủ đề có sẵn trong chủ đề nội tomcat của hồ bơi.
Tomcat không thể xử lý yêu cầu nữa nếu nhóm xử lý yêu cầu nội bộ của nó không có bất kỳ chuỗi miễn phí nào để thực hiện thêm công việc và chỉ đợi cho đến khi tình huống này thay đổi (có thể là mãi mãi).

tôi đoán là có ít nhất một servlet/jsp của một trong các ứng dụng web của bạn không bao giờ hoàn thành/trả.

Lấy kết xuất chuỗi để xác nhận điều này và dễ dàng xác định phần của phần mềm gây ra lỗi này.

Các vấn đề liên quan