2009-04-29 39 views
5

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ớp BoundedBuffer, tôi thấy rằng BoudedBuffer 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.

+0

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

+0

Có, nó là cùng cấp. Nó cũng xảy ra trên WebSphere 5.1 cũng như 6.1 –

Trả lời

0

Rất bản năng (không quen thuộc với nền tảng iSeries), tôi sẽ xem xét các vấn đề liên quan đến đĩa IO. Bạn có thể mô tả hệ thống con đĩa không? Bạn có thể xem liệu ứng dụng của mình có dành nhiều thời gian bất thường trong iowait không?

+0

Cảm ơn bạn đã đề xuất. Tôi đã nhìn vào I/O, nhưng khi máy chủ không hoạt động, vẫn có các xung CPU, nhưng không có các cuộc gọi I/O. –

0

Tôi biết điều này không hoàn toàn phù hợp với vấn đề của bạn. Nhưng có thể là đáng xem nếu bạn đang chạy trước khi WS 6.1 vá 17.

http://www-01.ibm.com/support/docview.wss?uid=swg24018437

Hope this helps. Chúc mừng John

+0

Thú vị đọc .. cảm ơn –

0

Đoán tốt nhất của tôi là một số loại giám sát đang được thực hiện trên cá thể, như là Tivioli vv Bạn đã loại trừ bất kỳ hoạt động GC nào chưa?

HTH Tom

+0

Cảm ơn lời bình luận Tom. Tivioli là một trong những điều đầu tiên chúng tôi xem xét. Không phải là thủ phạm mặc dù. Tôi đã quản lý để đáp ứng các khách hàng với lý thuyết "vệ sinh", vì vậy hy vọng đó là kết thúc của nó ngay bây giờ: P –

1

Bạn có thể thử để cấu hình và làm bãi đống ứng dụng, mà có thể trả lời một số câu hỏi liên quan đến bộ nhớ và sử dụng CPU.

0

Hầu hết các máy chủ ứng dụng được triển khai trong chính java và do đó là WebSphere. Máy chủ này ngoài việc phục vụ các yêu cầu của khách hàng phải thực hiện các công việc định kỳ khác như quản lý tài nguyên hồ bơi nói. Thực hiện công việc này sẽ tạo ra một số vật thể tạm thời cần phải được thu gom rác.

Tùy thuộc vào số lượng heap bạn đã cấp, sử dụng và cài đặt bộ thu gom rác, bộ thu gom rác sẽ được gọi. Tôi muốn nói thử xem nếu nó là chủ đề thu gom rác đang chiếm CPU của bạn. Đối với tiện ích kết nối jconsole này với quy trình websphere từ xa trong một ngày và xem liệu có bất kỳ mối quan hệ nào giữa việc sử dụng heap và sử dụng CPU hay không.

1

Tôi khuyên bạn nên theo dõi phải thu thập documentation do IBM cung cấp và nâng cao PMR cùng với điều tra của riêng bạn. Những điều bạn có thể nghi ngờ:

  • Thu gom rác (không sử dụng ứng dụng trên thấp)
  • Timers hoặc nhiệm vụ (như java.util.Hẹn giờ hoặc người quản lý công việc commonj)
  • kết nối pretest mà có một truy vấn phức tạp SQL (trong WebSphere Application tính nguồn máy chủ dữ liệu của DataSource)

Tôi cũng muốn khuyên bạn sử dụng các hồ sơ để xác định nguyên nhân, YourKit profiler là khá một phong nha.

0

Tôi cũng gặp phải sự cố rất giống nhau này, [Báo cáo trì hoãn: x] sử dụng với BoundedBuffer. Sự khác biệt duy nhất tôi có là đây là trên một máy tính Windows 7 64bit. Có hoàn toàn không có quá trình xử lý hàng loạt hoặc quá trình xử lý hàng loạt khác, không có yêu cầu nào được thực hiện, ví dụ đơn lẻ chỉ là không hoạt động.

Tôi có thể chạy ứng dụng ở chế độ DEBUG và tạm dừng chuỗi Báo động bị trì hoãn và đột biến CPU dừng lại, tiếp tục và chúng bắt đầu lại.

Tôi đã kiểm tra hoạt động trên đĩa, hoạt động mạng và không có gì xảy ra ở đó.

Tôi đang chạy WebSphere 6.1.0.27.