2009-10-30 17 views
9

Hallowe'en sau khi tất cả.Chủ đề zombie ăn não của tôi (J2EE, Tomcat, Hibernate, Quartz)

Đây là vấn đề: Tôi đang duy trì một số mã J2EE cũ, sử dụng Quartz, trong đó tôi đang hết đề tài. jconsole cho tôi biết rằng chỉ có ít nhất 60K chủ đề khi nó có hình quả lê, trong đó khoảng 100 (!!) thực sự đang chạy. Trực giác và một số googling (xem thêm here) cho thấy rằng những gì đang xảy ra là một cái gì đó (tôi cá cược Quartz) là tạo ra các chủ đề không được quản lý mà không bao giờ được làm sạch.

Vài subquestions:

  1. Nó có một công cụ mà tôi có thể sử dụng dễ dàng truy vấn tạo thread, vì vậy tôi có thể chắc chắn vấn đề này thực sự là thạch anh?

  2. Hầu hết mọi thứ tôi đã tìm thấy về các vấn đề tương tự như tham chiếu Weblogic; đây có phải là dẫn sai cho Tomcat không?

  3. Có ai có giải pháp đã biết không?

Đã nhiều năm kể từ khi tôi làm J2EE, vì vậy tôi sẽ không quá ngạc nhiên nếu đây là thứ có thể được giải quyết đơn giản.

Cập nhật: Rõ ràng là tăng các chuỗi không bị ràng buộc, xem cốt truyện này từ jconsole.

They're dead, Jim http://i35.tinypic.com/33vnarn.png

+0

Bạn có nhận thấy bất kỳ mẫu nào trong tên của chủ đề không?Tôi sẽ đình chỉ vấn đề là mã sử dụng Quartz, không phải Thạch anh tự nó –

+8

+1 cho tiêu đề, cho tôi biết mọi thứ tôi cần biết. Bạn đã thử shotgun? – Anthony

+0

Matt, tôi thực sự lỗi thời với các công cụ gỡ lỗi JEE (chỉ cần hỏi một câu hỏi riêng cho các khuyến nghị: http://stackoverflow.com/questions/1650881/state-of-the-art-in-j2ee-debugging-and -monitoring-tools/1650922 # 1650922) vì vậy tôi chưa có. Nhưng có một lỗi thạch anh đã biết khiến nó phát sinh các luồng không được quản lý. –

Trả lời

4
  • Cố gắng tăng mức độ khai thác gỗ của org.quartz.simpl.SimpleThreadPool để gỡ lỗi để lấy thêm thông tin.

  • Nếu cách này không hiệu quả, hãy thử trình nghe ghi nhật ký. Quartz có giao diện JobListener, được chỉ định trong tutorial. Người nghe có thể giúp bạn theo dõi việc thực hiện công việc. Có lẽ công việc không hoàn thành và bị bế tắc.

  • Định cấu hình org.quartz.threadPool.threadCount để ngừng chạy hết chuỗi.

update:

  • Ngoài ra, bạn có thể muốn lấy một bãi chứa thread và xem số liệu thống kê chủ đề. visual vm có plugin được gọi là TDA hoặc bạn có thể sử dụng trực tiếp Thread dump analyzer.

  • Chỉ trong trường hợp, hãy kiểm tra phiên bản thạch anh để xem liệu không có lỗi nào đã biết.

+0

Marcelo, âm mưu jconsole cho thấy các chủ đề rõ ràng đang phát triển vô cùng. Hmm, tôi nên bao gồm hình ảnh đó. –

0

Bạn đã có giao diện với jvisualvm - nó cung cấp thêm một số thông tin.

Ngoài ra, hãy lấy dấu vết ngăn xếp để xem chủ đề thực sự đang chờ gì. Bạn có thể có một cảm giác aha ngay tại đó.

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