Tomcat

2011-03-22 34 views
12

için sıraya alınmış isteklerin sayısının ölçülmesi Bu nedenle, tomcat ile, tüm iş parçacıkları meşgul olduğunda kabul edilen acceptCount değerini (varsayılan 100) ayarlayabilirsiniz - yeni bağlantılar bir sıraya yerleştirilir. reddedilirler).Tomcat

İstediğim şey, bu sıradaki öğelerin boyutunu izlemek - ancak JMX aracılığıyla (yani, kuyruk maksimum boyutunun değil) elde etmek için bir yol varsa, çalışamaz. Ancak, geçerli öğe sayısı kuyrukta ne var?).

Herhangi bir fikir takdir edildi. tomcat için

Yapılandırma:

cevap

6

Bu thread on the mailing listesi ve the reply from Charles böyle JMX varolduğunu ortaya koymaktadır http://tomcat.apache.org/tomcat-6.0-doc/config/http.html ("acceptCount" için arama). Chuck'tan

Alıntı: "Bu OS'nin comm yığını tarafından tutulan beri kuyruğunu kabul ettiğini Not Tomcat, görünür değildir."

Serhat'ın

Alıntı: "Maalesef Tomcat kabul kuyruğunda istekleri hakkında hiçbir şey bilmiyor, çünkü ...."

istekleri olan ne kadar bu bilgileri (almak için bir yol var mı kabul sırası?) Çıkış?

Hayır, kabul sırası tamamen görünmezdir. Sadece comm yığını bu konuda bir şey biliyor ve içeriği yok - içeriğinin farkında olduğumun farkında olan API'ları yok - içerik henüz alınmadı, yalnızca bağlantı isteği alındı. Gerçek sorunun ne bağlı

(yani Tomcat henüz işleminiz işlenirken başlamamış kabul kuyruğunda istekleri ölçmek için) Eğer bir "azaltma çözüm" bu follow-up on the same thread bkz bakıyorsanız.

+0

İlginç, şüphelendim. İskelesi ile biliyorum ki sıra isteklerini alabilirsin (ki bu da birisinin ML üzerinde önerdiği çözümlerden birine benziyor) - ama bu, tomcat'in şu anki durumundan biraz farklı görünüyor. –

+0

@Michael: Kullanım durumunuzla ilgileniyorum. Belirli URL modellerini filtrelemek veya herhangi bir servleti önceliklendirmek istersiniz - yani neden bekleyen talepleri izlemek istesin? – JoseK

+0

Aslında, sunucunun genel "yükü" metriğiyle daha çok ilgileniyorum - yani monitör olaylarını tetiklemek için. –

2

Kabul sırası izlenemiyor, ancak Executor numaralı telefonu kullanarak tomcat için sıraya alınan isteklerin sayısını alabilirsiniz.

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="20" minSpareThreads="10" maxQueueSize="30" /> 
<Connector port="8080" protocol="HTTP/1.1" executor="tomcatThreadPool" connectionTimeout="20000" redirectPort="8443" maxConnections="50" /> 

yapılandırma maxthreads = "20" threadpool eşzamanlı olarak 20 isteklerini işleyebilir, en fazla 20 işçi sahip olduğu anlamına gelir.

maxQueueSize = "30", iş parçacığının en fazla 30 işlenmemiş istekte kuyruğa girebileceği anlamına gelir. Böylece, sıraya alınan isteklerin sayısını almak için JMX üzerinden queueSize özniteliğini izleyebilirsiniz. MaxConnections varsayılan değeri tüm işçiler meşgul olduğunda, yeni istekler kabul kuyruğunda sıraya demektir maxthreads değeri olduğu için

Ama varsayılan olarak

, threadpool kuyruk herhangi istekleri tutun asla.

maxConnections = "50" ayarlanarak, tomcat, maxThreads (20) 'den daha fazla istekleri kabul edebilir. Yukarıdaki örnekte, Yürütücü iş parçacığı 20 istek işleyebilir, fazladan 30 istek iş parçacığı kuyruğunda tutulacak, daha fazla istek de kabul sıralarında sıra olacaktır.

Yani şimdi MBean kullanarak threadpool kuyruğa istek sayısını izleyebilirsiniz 'Catalina: type = Executor, isim = tomcatThreadPool' ve özellik adı 'queueSize'