Thứ nhất, chỉ là một chút của nền:Spikes sử dụng CPU trong WebSphere 6.1
Một trong những khách hàng của chúng tôi đang trải qua gai sử dụng CPU cho WebSphere trường chạy một trong các ứng dụng web của chúng tôi (những trường hợp khác với các ứng dụng khác cũng tốt) . Họ có một môi trường thử nghiệm và một môi trường sống (cả hai iSeries) mà cả hai trải nghiệm vấn đề - với một ứng dụng duy nhất cho mỗi thiết lập cá thể. Chúng tôi đã triển khai ứng dụng này cục bộ trong các môi trường thử nghiệm của riêng mình và cũng cho nhiều khách hàng khác trên iSeries mà không có vấn đề tương tự.
gì thực sự xảy ra:
Mỗi một giây hoặc lâu hơn, việc sử dụng CPU cho quá trình WebSphere sử dụng CPU nhảy đến bất cứ nơi nào 7%
-20%
mặc dù không có yêu cầu được xử lý vào thời điểm đó. Khách hàng đã báo cáo thấy số lần tăng đột biến cao nhất là 30%
. Những mức tăng trung bình này là 1.5%
tổng thể của CPU - các phiên bản WebSphere khác thường sử dụng 0%
- 0.1%
khi không hoạt động.
cuộc điều tra của tôi cho đến nay
Vì vậy, tôi đã có một cái nhìn tại các chủ đề. Một luồng trong môi trường thử nghiệm đã sử dụng ~350
chu kỳ CPU mỗi giây. Một chủ đề tương tự trong môi trường trực tiếp của họ là sử dụng ~1500
chu kỳ CPU mỗi giây (cho thấy rằng nó có CPU lớn hơn). Ngăn xếp cuộc gọi cho các chủ đề này trông giống như
Type Program Statement Procedure
QLESPI QSYS 17 LE_Create_Thread2__FP12crtt >
QJVALIBJVM QSYS 7 startThread__FPv
J com/ibm/ws/util/Threa > run
J com/ibm/ws/util/Threa > run
J com/ibm/ws/util/Threa > getTask
J com/ibm/ws/util/Bound > poll
Toàn bộ tên lớp từ dòng dưới cùng là com/ibm/ws/util/BoundedBuffer
. Tôi hỏi khách hàng để làm một Dump JVM cho tôi - thông tin bổ sung duy nhất tôi nhận được từ này là tên chủ đề:
Thread: 00002F82 Deferrable Alarm : 11
Bây giờ cho câu hỏi của tôi:
- bất kỳ của bạn có thể xác định vấn đề, đưa ra những triệu chứng này? (Có thể đó là một cảnh quay dài!)
Deferrable Alarm
là gì? Từ JVM Dump, tôi có thể thấy 4 chủ đề với tên này. Ba người kia dường như đang làm tốt. Bằng cách gỡ lỗi WebSphere cục bộ của tôi (trên Windows) và thêm các điểm ngắt trong lớpBoundedBuffer
, tôi thấy rằngBoudedBuffer
s đang thăm dò ý kiến và định kỳ gọi một số người nghe.- Tôi không có quyền truy cập vào bảng điều khiển WebSphere cho các máy khách hàng và họ không sở hữu tối đa việc thực hiện bất kỳ thay đổi cấu hình nào. Tôi có thể yêu cầu họ kiểm tra bảng điều khiển cho tôi mặc dù - tôi nên yêu cầu họ xem xét điều gì?
- Tôi có quyền truy cập telnet vào hộp khách hàng, có điều gì khác mà tôi có thể điều tra ở đây không? Xem các tệp hồ sơ WebSphere, v.v ...? Tôi nên xem những tệp nào?
- Vì Ngăn xếp cuộc gọi và Dump JVM không tham chiếu rõ ràng mã của chúng tôi, có an toàn để cho rằng đây là sự cố cấu hình không?
Đó là một câu hỏi dài, vì vậy cảm ơn bạn đã đọc bài viết này.
ngày 30 tháng 4 Cập nhật (1)
Sáng nay tôi đã nhận thấy rằng hành vi này chỉ xảy ra sau khi yêu cầu đầu tiên trong ngày đã được xử lý (không phân biệt mà Web Service được gọi). Điều này trỏ ngón tay trở lại ứng dụng của chúng ta hoặc Apache Axis. Có thể nào đó là hành vi bình thường ?!
30 Cập nhật tháng tư (2)
Vì vậy, có vẻ như hoạt động của CPU này là một loại sinh hoạt vệ sinh cho web-ten-nơ hoặc có lẽ một cái gì đó trong Apache Axis. Bây giờ tôi đã quan sát điều này xảy ra trên một vài ứng dụng web khác nhau trên một vài máy chủ khác nhau. Các ứng dụng không có thành phần web không chịu cùng chi phí CPU bổ sung.
Tôi tưởng tượng nếu nó là công việc của nhà vệ sinh, thì "điều chỉnh" bằng cách nào đó có thể phản tác dụng - bằng cách đó, có nghĩa là làm cho Máy chủ ứng dụng nhàn rỗi tốt hơn có thể ảnh hưởng tiêu cực đến số lượng công việc "thực" làm.
Khách hàng này iSeries có cùng cấp với các khách hàng khác của bạn không? Có sự khác biệt nào khác khiến cái này trở nên độc đáo không? – Ichorus
Có, nó là cùng cấp. Nó cũng xảy ra trên WebSphere 5.1 cũng như 6.1 –