मैंने जावा में एक कस्टम संदेश सर्वर बनाया है जो संदेशों की एक स्ट्रीम लेता है और प्रत्येक संदेश को अपने क्लाइंट को भेजता है (1: 1, ड्रॉप संदेश अगर कनेक्ट नहीं होता है - बहुत सरल)। मैं Win7x64 & जावा 7 पर टॉमकैट 7 चला रहा हूं और एनआईओ कनेक्टर (एक धूमकेतु सर्वलेट लागू) का उपयोग कर रहा हूं। यह बहुत अच्छा काम करता है लेकिन अब मैं उस जानवर को स्केल करने की तलाश में हूं और वर्तमान में प्रत्येक कनेक्टेड क्लाइंट के लिए आवंटित 85 केबी रैम देख रहा हूं। 900 एमबी के तहत 10.000 ग्राहक @ रैखिक रूप से स्केलिंग। (मैं अभी कुछ भी नहीं कर रहा हूं लेकिन कनेक्शन को पकड़ रहा हूं) यह मेरी राय के लिए काफी कुछ है, इसलिए मैं सोच रहा हूं कि टॉमकैट या जावा को अपने एनआईओ इम्प्ल के साथ अधिक मेमोरी बचाने के लिए कुछ बदलाव हैं या नहीं। मैंने अभी तक की सभी टॉमकैट सेटिंग्स को प्रभावित नहीं किया है।टॉमकैट "प्रति कनेक्शन" मेमोरी पदचिह्न को कम करें
क्या किसी को अनुभव है कि जावा या टॉमकैट को सॉकेट कनेक्शन के बारे में स्मृति आहार पर कैसे रखा जाए?
अद्यतन: अब मैं सॉकेट बफर और कुछ अन्य टोमकैट आंतरिक को ट्रिम करके 70 किलो/कनेक्शन के नीचे नीचे आ गया हूं। सुनिश्चित नहीं है कि यह अब थ्रूपुट को कैसे प्रभावित करता है। मैंने उसी परिणाम के साथ 32 बिट/64 बिट लिनक्स पर भी कोशिश की है।
आपने प्रति ग्राहक 85kb कैसे मापा? – dash1e
मैंने एक छोटा भार परीक्षण किया और 10.000 क्लाइंट जुड़े। सर्वर कोड में मैंने प्रत्येक 100 क्लाइंट के बाद System.gc() किया और फिर कंसोल पर Runtime.totalMemory() - Runtime.freeMemory() मुद्रित किया। – Daniel
हाय। क्या आप अपनी सर्वश्रेष्ठ टोमकैट/जेवीएम सेटिंग्स साझा कर सकते हैं? इसके अलावा, क्या आपने एनआईओ कनेक्टर का उपयोग किया था? 10x – JRun