2012-07-01 33 views
5

Chào buổi chiều. Tôi đang có một vấn đề thực sự khó hiểu với máy ảo Java trên máy chủ CentOS 6 (64bit) của tôi. Đó là một máy chủ với một CPU quad-core (với siêu phân luồng), 16GB RAM và không gian ổ cứng 2TB (trên phần mềm RAID1). Tôi figured tôi muốn hỏi ở đây bởi vì, theo các câu hỏi thường gặp, câu hỏi về "công cụ phổ biến" được sử dụng bởi các nhà phát triển là thích hợp. Hy vọng rằng ai đó có thể làm sáng tỏ vấn đề này.JVM luôn sử dụng 100% CPU trong CentOS 6

Tôi chạy một phần của phần mềm Java trên máy chủ, 24h/ngày. Đầu ngày hôm nay (phát hiện một vài giờ sau nửa đêm trên miền địa phương của máy chủ, điều này đáng chú ý vì đó là ngày đầu tiên của tháng) tôi nhận được báo cáo của người dùng kết nối với phần mềm này khi khách hàng về nó đột nhiên trở nên không sử dụng được. JVM không bao giờ bị gián đoạn hoặc khởi động lại. Nó đã được khởi động lại lần cuối chỉ vài ngày trước, và nó đã hoạt động bình thường kể từ đó (sử dụng khoảng 5% hoặc ít hơn CPU, đó là bình thường).

Lần này, khi tôi kiểm tra quy trình, về cơ bản nó đã chiếm hết thời gian CPU nó có thể vật lộn với các ứng dụng khác đang chạy trên máy chủ (theo báo cáo của đầu), hoặc trên 100% (theo báo cáo) ps). Tôi đã thử dừng và khởi động lại ứng dụng, nhưng ngay sau khi nó đang chạy, việc sử dụng CPU sẽ ngay lập tức bắn lên trên 100% một lần nữa. Sử dụng bộ nhớ là bình thường. Tôi đã thử nghiệm với các cờ JVM khác nhau, không có kết quả. Tôi đã thử tải xuống phiên bản mới nhất của phần mềm và cài đặt mới, nhưng điều này cũng không giúp ích gì. Cuối cùng, tôi đã thử tải xuống một, phần hoàn toàn khác biệt của phần mềm Java, nhưng khi tôi chạy nó trên máy chủ, nó cũng gặp phải vấn đề tương tự.

Khi tôi tải xuống phần mềm và chạy phần mềm đó trên máy tính của mình, mức sử dụng CPU là bình thường. Vì vậy, tôi giả định là sai trong máy chủ, nhưng tôi không thể tưởng tượng những gì nó có thể có thể được. JVM của máy chủ được cập nhật, từ một gói kho lưu trữ tiêu chuẩn (không có tùy chỉnh).

Từ java -version:

java version "1.6.0_24" 
OpenJDK Runtime Environment (IcedTea6 1.11.3) (rhel-1.48.1.11.3.el6_2-x86_64) 
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode) 

Từ -a uname:

2.6.32-131.21.1.el6.x86_64 #1 SMP Tue Nov 22 19:48:09 GMT 2011 x86_64 x86_64 x86_64 GNU/Linux 

Từ centos phát hành/redhat-release/hệ thống phát hành:

CentOS release 6.2 (Final) 

báo cáo miễn phí khoảng 14,5 GB RAM miễn phí. df báo cáo khoảng 1.4tb dung lượng đĩa trống trong phân vùng/home (nơi phần mềm được đề cập và tất cả các tệp của họ được đặt).

Bất kỳ ý tưởng nào? Vui lòng hỏi xem bạn có cần thêm dữ liệu hay không và vui lòng đề xuất các thủ tục để tôi thử/kiểm tra. Khi tìm kiếm vấn đề, tôi tìm thấy một số trường hợp của những người gặp rắc rối với JVM ăn cắp tất cả các CPU trên CentOS, nhưng không ai trong số họ dường như phù hợp với vấn đề của tôi.

+1

Hôm nay có một bước nhảy vọt. Giờ tính giờ hết hạn một giây * trước * chúng được đặt! Khởi động lại. –

+0

Ồ. Tôi sẽ cho bạn biết nếu nó hoạt động để bạn có thể đăng nó như là một câu trả lời sau. – Protected

+0

Điều đó hoàn toàn hiệu quả. Cảm ơn. Tôi thường không thể khởi động lại máy chủ mà không có lý do cụ thể trước, vì nó ngắt dịch vụ cho tất cả khách hàng. – Protected

Trả lời

8

Bạn có thể muốn thử các lệnh sau

# service ntpd stop; date -s "`date`";service ntpd start; 

Tôi có CentOS6 với kernel 2.6.32-220.el6.x86_64 và jdk1.7.0_04, CPU cao đã được quan sát và giải quyết bằng lệnh trên. không cần khởi động lại hệ điều hành.

Điều này dường như là lỗi với hạt nhân Linux như được mô tả tại https://access.redhat.com/knowledge/solutions/154793. Sửa chữa ở trên được mô tả tại http://blog.wpkg.org/2012/07/01/java-leap-second-bug-30-june-1-july-2012-fix/

+0

Điều này cũng đã sửa nó cho tôi bằng hạt nhân 2.6.32-220.17.1.el6.x86_64 # 1 SMP và java "1.6.0_24" OpenJDK (IcedTea6 1.11.3) (rhel-1.48.1.11.3.el6_2-x86_64) (xây dựng 20,0-b12, chế độ hỗn hợp) – danio

0

Tôi có thể xác nhận vấn đề này có trên Fedora 14, Tomcat 6 và OpenJDK 1.6. Giải pháp của Mysticial cũng làm việc cho tôi.

uname -ar:

2.6.35.14-103.fc14.x86_64 #1 SMP Thu Oct 27 15:41:25 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux 

java -version:

java version "1.6.0_20" 
OpenJDK Runtime Environment (IcedTea6 1.9.10) (fedora-55.1.9.10.fc14-x86_64) 
OpenJDK 64-Bit Server VM (build 19.0-b09, mixed mode) 
1

tôi cũng có thể khẳng định hiện nay vấn đề trong RHEL 6, Tomcat 7, và Sun/Oracle Java 7 & Java 6.

ntpd stop; date; ntpd start lệnh đã hoạt động.

uname: 
2.6.32-220.2.1.el6.x86_64 #1 SMP Fri Dec 23 02:21:33 CST 2011 x86_64 x86_64 x86_64 GNU/Linux 
Các vấn đề liên quan