2012-12-05 25 views
10

Chúng tôi đang sử dụng Glassfish 3.0.1 và trải qua thời gian phản hồi rất dài; theo thứ tự 5 phút cho 25% yêu cầu POST/PUT của chúng tôi, vào thời điểm phản hồi quay trở lại, cân bằng tải mặt trước đã hết thời gian chờ.Các vấn đề về hồ bơi của chủ đề thủy tinh

Lý thuyết của tôi là các yêu cầu đang xếp hàng và chờ một chuỗi có sẵn. Lý do tôi nghĩ rằng điều này là do các bản ghi truy cập cho thấy rằng các yêu cầu mất vài giây để hoàn thành, tuy nhiên thời gian mà các yêu cầu đang được thực thi là năm phút sau tôi mong đợi.

Có ai có lời khuyên nào để gỡ lỗi những gì đang xảy ra với các hồ bơi luồng không? hoặc cài đặt tối ưu nào cho họ?

Bạn có cần phải thực hiện kết xuất chuỗi theo định kỳ hoặc một bãi chứa có đủ không?

+2

Kích thước nhóm chủ đề công nhân của bạn là gì? – user85155

+0

chúng tôi có hai hồ luồng: http-thread-pool và \t thread-pool-1, sau này được sử dụng cho các yêu cầu EJB tôi tin rằng kích thước tối thiểu là 5 và tối đa là 500, làm cách nào tôi tìm ra kích thước nhóm công nhân ? –

Trả lời

6

Thoạt nhìn, điều này dường như có rất ít việc phải làm với chính threadpool. Không biết nhiều về phần còn lại của thiết lập mạng của bạn, dưới đây là một số điều tôi sẽ kiểm tra:

  • Có nút chết/không phản hồi trong nhóm cân bằng tải không? Điều này có thể khiến tất cả các yêu cầu được thử đối với nút này cho đến khi chúng không thành công do hết thời gian chờ trước khi được chuyển hướng đến nút khác.
  • Có vấn đề gì với kết nối ban đầu giữa cân bằng tải và máy chủ Glassfish không? Điều này có thể là tra cứu DNS chậm hoặc không chính xác (mặc dù máy chủ nên lưu trữ kết quả), proxy bị thiếu hoặc một số vấn đề liên quan đến mạng khác.
  • Bạn đã kiểm tra đồng hồ được đồng bộ hóa giữa các máy chưa? Điều này có thể khiến các bản ghi không đồng bộ. 5min là một khoảng thời gian chờ khá kỳ lạ.

Nếu tất cả những thứ này đều trống, bạn có thể có trở kháng không phù hợp giữa cân bằng tải và máy chủ web và bạn có thể cần phải thêm máy chủ web để xử lý tải. Cân bằng tải sẽ có thể cung cấp cho bạn nhiều số liệu thống kê về lưu lượng truy cập đến và cách xếp hàng.

2

Lấy threaddump là cách tốt nhất để gỡ lỗi những gì đang xảy ra với các threadpools. Xin vui lòng mất 3-4 threaddumps cái khác với 1-2 giây khoảng cách giữa mỗi threaddump.

Từ threaddump, bạn có thể tìm số chủ đề công nhân theo tên của họ. Tìm ra các chủ đề chạy dài từ nhiều threaddumps.

Bạn có thể sử dụng công cụ TDA (http://java.net/projects/tda/downloads/download/tda-bin-2.2.zip) để phân tích các đoạn đường nối.

3

Thông thường bạn sẽ nhận được hành vi này nếu bạn đã định cấu hình không đủ chuỗi công việc trong máy chủ của mình. Các giá trị mặc định nằm trong khoảng từ 15 đến 100 luồng trong các máy chủ web phổ biến. Tuy nhiên, nếu ứng dụng của bạn chặn luồng công nhân của máy chủ (ví dụ: bằng cách chờ truy vấn), các giá trị mặc định thường quá thấp. Bạn có thể tăng số lượng nhân viên lên đến 1000 mà không gặp vấn đề gì (đảm bảo 64 bit). Ngoài ra, hãy kiểm tra số lượng nhân viên làm việc (đôi khi được gọi là 'yêu cầu đồng thời/mở tối đa') của bất kỳ máy chủ nào ở giữa (ví dụ: proxy hoặc chuyển tiếp apache qua mod_proxy).

Một lỗ hổng phổ biến khác là phần mềm của bạn gửi yêu cầu đến chính nó (ví dụ: cố gắng định tuyến lại hoặc chuyển tiếp yêu cầu) trong khi chặn yêu cầu đến.

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