Tôi có một ứng dụng web Java/Java EE được triển khai trên Máy chủ Tomcat 5.5.17. Tôi muốn biết số lượng khách hàng được kết nối với máy chủ. Làm thế nào chúng ta có thể tìm thấy nó?Tìm hiểu số lượng kết nối tới máy chủ tomcat
Trả lời
Cách đáng tin cậy nhất sẽ là tìm kiếm ip.addr.of.srv:port
trong netstat
. Dưới đây là Windows dựa dụ (xin lỗi, không có Linux guru đây;))
netstat -np tcp | find "12.34.56.78:80"
Thay 12.34.56.78
bởi IP nơi Tomcat lắng nghe trên và 80
bởi cảng nơi Tomcat lắng nghe trên.
Đây thực sự không phải là vấn đề lập trình, do đó tôi đã bỏ phiếu để chuyển câu hỏi này sang serverfault.com.
Tôi sử dụng Apache Geronimo và nó hiển thị trong bảng điều khiển web số lượng các chuỗi bận hiện tại (không phải phiên) để có thể lập trình được. Đối với giải pháp của bạn, bạn nên có netstat -np tcp | tìm thấy "12.34.56.78:80" | tìm "THÀNH LẬP" để bạn không bao gồm các quốc gia không được thiết lập như FIN_WAIT, SYN_SENT, v.v. – ericp
đếm (chủ đề)! = đếm (kết nối). Có thể có phương tiện của một threadpool và/hoặc chủ đề được sử dụng cho các mục đích khác (daemon, backgroundtasks, dọn dẹp, vv). Theo đề xuất netstat của bạn, điều này thực sự có ý nghĩa hơn. – BalusC
Tôi thực hiện điều này trong CentOS với '' '' netstat -an | grep: 80 | wc -l'''' như được mô tả trong bài viết này (https://www.exchangecore.com/blog/find-number-active-connections-linux-using-netstat/) – AntonioOtero
Xem phần dưới Tomcat Manager để biết ví dụ về tính số phiên trong ứng dụng web.
Đếm số lượng kết nối có thể khó hơn một chút. Tomcat bắt đầu một chuỗi mới cho mỗi yêu cầu đến tối đa là "maxProcessors". Ngoài số này, các yêu cầu được xếp hàng tối đa là "acceptCount" .Yêu cầu vượt quá số này bị từ chối/bị từ chối (hoặc bị treo, tôi không chắc chắn). Các thuộc tính có thể được theo dõi bằng cách sử dụng JConsole - steps here. Các thuộc tính cụ thể được đề cập ở trên là các thuộc tính của HTTP Connector.
EDIT 1: Sau khi xem qua mã nguồn của CoyoteConnector và AJP Connector, có một thuộc tính riêng được gọi là curProcessors theo dõi số lượng bộ xử lý hiện đang sử dụng. Tuy nhiên, việc thêm biến curProcessors vào tệp mbeans cho các trình kết nối dường như không hiển thị giá trị hiện tại trong màn hình JConsole.
Lưu ý: Tệp XML mbeans mà tôi đã sửa đổi nằm trong thư mục tomcat \ server \ lib \ catalina.jar và nằm trong thư mục kết nối org \ apache \ catalina \ trong jar. Dưới đây là ví dụ về mục nhập tôi đã thêm: <attribute name="curProcessors" description="the number of processors currently in use" type="int"/>
Bạn có thể cho tôi biết sự khác biệt giữa số phiên và số lượng kết nối không? Tôi nghĩ rằng tôi cần phải biết số lượng kết nối đến một máy chủ tomcat. – Thunderhashy
Tôi trích dẫn từ tài liệu API- Phiên - Cung cấp cách xác định người dùng trên nhiều yêu cầu trang hoặc truy cập vào trang Web và lưu trữ thông tin về người dùng đó. Phiên này vẫn tồn tại trong một khoảng thời gian cụ thể, trên nhiều kết nối kết nối hoặc yêu cầu trang từ người dùng. Về cơ bản, người dùng có thể có 1 phiên và nhiều kết nối cho các yêu cầu khác nhau. Hoặc, nếu bạn xem xét một trang đang tải các phần khác nhau bằng cách sử dụng các yêu cầu AJAX, việc tải từng phần sẽ tạo một kết nối khác với máy chủ trong khi sử dụng cùng một phiên (nếu có). – Thimmayya
Và nếu bạn cần phải tìm đến những gì mỗi kết nối được thực hiện, sử dụng điều này trên Linux
netstat -an | grep :8080 | awk '{print $6}'
Nếu có ba kết nối, bạn sẽ thấy
LISTEN TIME_WAIT TIME_WAIT
Và nếu bạn chỉ muốn đếm các kết nối ở trạng thái TIME_WAIT
netstat -an | grep :8080 | grep TIME_WAIT | wc -l
Bạn có ý nghĩa gì với "được kết nối"? Trừ khi bạn "giữ họ", các kết nối HTTP không liên tục. –