वर्तमान धागा गतिशील रूप से अपाचे द्वारा प्रबंधित किया जाता है।
apache के स्रोत कोड में वर्किंग.c से: धागा आवश्यकतानुसार शुरू किया गया है। वर्कर थ्रेड शुरू करने के लिए मुख्य प्रवाह निम्नलिखित है।
static int worker_run(apr_pool_t *_pconf, apr_pool_t *plog, server_rec *s)
startup_children(remaining_children_to_start); //server/mpm/worker/worker.c
if (make_child(ap_server_conf, i) < 0) { //server/mpm/worker/worker.c
child_main(slot); //server/mpm/worker/worker.c
rv = apr_thread_create(&start_thread_id, thread_attr, start_threads
rv = apr_thread_create(&threads[i], thread_attr, worker_thread, my_info, pchild);
और जब निष्क्रिय धागा> max_spare_threads, अपाचे मार बच्चे प्रक्रिया/धागा द्वारा अतिरिक्त धागा कम करने के लिए कम करने की कोशिश करेंगे निष्क्रिय धागे गिनती।
if (idle_thread_count > max_spare_threads) {
/* Kill off one child */
ap_worker_pod_signal(pod, TRUE);
retained->idle_spawn_rate = 1;
}
आंतरिक रूप से अपाचे इन बच्चे प्रक्रिया का प्रबंधन, और संकेत का उपयोग कर बच्चे की प्रक्रिया के साथ संवाद करने की जरूरत धागे समायोजित करने के लिए। सभी धागे ap_scoreboard_image->servers[i][j];
अपाचे थ्रेड गिनती की निगरानी करेंगे, और जानकारी देने के लिए सॉकेट भेजकर कोलेक्टर को पता चलेगा। मोटे तौर पर कोड का पालन करते हुए (असंबंधित लाइन नष्ट कर दिया गया)
./httpd/modules/cluster/mod_heartbeat.c
for (i = 0; i < ctx->server_limit; i++) {
....
for (j = 0; j < ctx->thread_limit; j++) {
ws = &ap_scoreboard_image->servers[i][j];
if (res == SERVER_READY && ps->generation == mpm_generation) {
ready++;
}
}
}
len = apr_snprintf(buf, sizeof(buf), "v=%u&ready=%u&busy=%u", MSG_VERSION, ready, busy);
...
rv = apr_socket_sendto(sock, ctx->mcast_addr, 0, buf, &len);
बिलाव में: ./tomcat/java/org/apache/catalina/ha/backend/CollectedInfo: इन धागा जानकारी से प्राप्त कर रहे हैं। जावा और द्वारा प्रदर्शित: /Users/twer/lab/tomcat/java/org/apache/catalina/manager/StatusTransformer.java
writer.write(" currentThreadCount=\"" + mBeanServer.getAttribute(tpName, "currentThreadCount") + "\"");
यहाँ कोड शो का सबसे मुख्य प्रवाह कर रहे हैं, असंबंधित लाइन नष्ट हो जाती हैं । अधिक जानने के लिए स्रोत डाउनलोड करें। डाउनलोड अपाचे स्रोत: http://www.apache.org/dist/httpd/?C=S;O=A डाउनलोड tomcat src: http://tomcat.apache.org/download-70.cgi
उत्तर के लिए धन्यवाद, लेकिन यह मेरे प्रश्न का उत्तर नहीं देता है। मैं अपना सर्वर स्केल कर रहा हूं। मेरे पास अधिकतम धागे = 128 होते थे, और उनमें से अधिकांश व्यस्त थे। मैंने इसे अधिकतम धागे = 256 में बदल दिया। इस नंबर के साथ, मेरे पास 200 धागे व्यस्त थे। अब मुझे और हिट मिल रही हैं। मुझे लगता है कि 400 धागे व्यस्त होना चाहिए, इसलिए मैंने अधिकतम धागे की संख्या को 512 तक दोगुना कर दिया। लेकिन सर्वर केवल एक समय में अधिकतम 256 धागे की सेवा कर रहा है। तो मेरा सवाल है: मेरा सर्वर अधिक धागे का उपयोग करने के लिए मुझे क्या करना चाहिए? – mossaab
कुछ वेब लोड टेस्ट टूल का उपयोग करने का प्रयास करें, सर्वर को अधिक अनुरोध प्राप्त करने दें, यह देखने के लिए कि क्या यह 512 तक हो सकता है। Http://stackoverflow.com/questions/5139953/web-server-load-testing-tool – whunmr