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)]
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
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
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