Skip to content

मर्ज के बाद jrpm शाखा पर आधारित (pulsexlb सुविधाएँ और jrpm-विशिष्ट अनुकूलन सहित)। पैरामीटर डिफ़ॉल्ट मान src/table/settings/network_settings.ini से लिए गए हैं, वास्तविक लोड परीक्षण के अनुसार समायोजित करने की सिफारिश की जाती है।

एक, लागू प्रदर्शन अनुकूलन (इस बार) ​

अनुकूलनकमिटविवरण
समानांतर डाउनलोड समवर्तीता कॉन्फ़िगर करने योग्य4716b925network.content_download_parallel (डिफ़ॉल्ट 4, 1-8): सामग्री डाउनलोड के दौरान एक साथ होने वाली फ़ाइलों की संख्या, हार्डकोडेड 4 के बजाय
मल्टी-मिरर + फ़ाइल-स्तरीय समानांतर डाउनलोडd4c45740 (F1)network.content_mirrors अल्पविराम से अलग मल्टी-मिरर, विफलता पर मिरर पुनर्प्रयास, अंत में पुराने प्रोटोकॉल पर वापसी
सर्वर मल्टी-वर्जन क्लाइंट संगतताcb9848b7सर्वर एक साथ jrpm / मूल jgrpp / pulsexlb क्लाइंट स्वीकार कर सकता है

दो, सर्वर प्रदर्शन प्रमुख पैरामीटर (jgrpp प्रणाली) ​

सेटिंगडिफ़ॉल्टसीमाअर्थट्यूनिंग सुझाव
network.sync_freq1000-100कितने फ्रेम पर एक बार फ्रेम सिंक सत्यापन (desync जाँच)। बड़ा मान = कम बैंडविड्थ, छोटा मान = जल्दी डीसिंक का पता लगानामल्टीप्लेयर स्थिरता प्राथमिकता होने पर 20-50 तक कम करें; बार-बार desync होने पर कम करें
network.frame_freq00-100सर्वर हर कितने फ्रेम पर एक बार कमांड फ्रेम पैकेट भेजता है (0 = हर फ्रेम भेजता है)। बड़ा मान = कम बैंडविड्थ/CPU, लेकिन ऑपरेशन विलंब बढ़ता हैसामान्य 0-3; अधिक खिलाड़ियों वाले सर्वर पर 5 तक, लोड परीक्षण के बाद तय करें
network.commands_per_frame21-65535प्रति फ्रेम संसाधित क्लाइंट कमांड की ऊपरी सीमा (स्पैम/दुर्भावना रोकें)अधिक खिलाड़ी, बार-बार ऑपरेशन होने पर 4-8 तक बढ़ाएँ
network.commands_per_frame_server161-65535सर्वर के स्वयं के प्रति फ्रेम कमांड की ऊपरी सीमाआमतौर पर बदलने की आवश्यकता नहीं
network.bytes_per_frame81-65535दीर्घकालिक औसत प्रति फ्रेम प्राप्त बाइट्स की ऊपरी सीमा (बैंडविड्थ शेपिंग)अच्छा ब्रॉडबैंड होने पर 16-32 तक बढ़ाएँ, बड़े मानचित्र सिंक गति सुधारें
network.bytes_per_frame_burst2561-65535आकस्मिक बाइट ऊपरी सीमा (अल्पकालिक पीक की अनुमति)उपरोक्त आइटम के साथ बढ़ाएँ, जैसे 512
network.max_init_time600-32000क्लाइंट आरंभीकरण टाइमआउट (tick)कमजोर नेटवर्क वाले खिलाड़ियों के लिए बढ़ाएँ
network.max_join_time5000-32000क्लाइंट जुड़ने (मानचित्र डाउनलोड + सिंक) टाइमआउट (tick)बड़े मानचित्र/धीमी बैंडविड्थ के लिए 1000+ तक बढ़ाएँ
network.max_download_time10000-32000मानचित्र डाउनलोड टाइमआउट (tick)बड़े मानचित्र (4096+) के लिए 2000+ सुझाव
network.max_lag_time8000-32000क्लाइंट अधिकतम विलंब सहनशीलता (tick)अधिक उच्च विलंब वाले खिलाड़ियों के लिए बढ़ाएँ, लेकिन desync जोखिम बढ़ता है

नोट: max_*_time इकाई गेम tick (1/74 सेकंड ≈ 13.5ms) है; bytes_per_frame प्रति फ्रेम सिंक विंडो के औसत बाइट्स को संदर्भित करता है।

तीन, अनुशंसित सर्वर प्रारंभ कॉन्फ़िगरेशन (मल्टीप्लेयर परिदृश्य) ​

ini
[network]
max_clients = 32            ; या आवश्यकतानुसार
max_companies = 15
frame_freq = 3              ; 0=हर फ्रेम कमांड भेजें (सबसे सुचारू); 3=समझौता बैंडविड्थ बचत
sync_freq = 50              ; जल्दी desync का पता लगाएं
commands_per_frame = 8
bytes_per_frame = 16
bytes_per_frame_burst = 512
max_join_time = 1000
max_download_time = 2000
max_lag_time = 1200
content_download_parallel = 4   ; क्लाइंट-साइड सामग्री डाउनलोड समवर्तीता

चार, बाद में लागू किए जा सकने वाले प्रदर्शन अनुकूलन दिशाएँ (प्राथमिकता के अनुसार) ​

  1. HTTP ट्रांसपोर्ट लेयर थ्रेड पूल + Range खंडित डाउनलोड (Openttd-Cluster 0007 विचार) वर्तमान स्थिति: F1 में पहले से "फ़ाइल-स्तरीय समानांतर" (एकाधिक फ़ाइलें एक साथ डाउनलोड) लागू है। 0007 HTTP लेयर में थ्रेड पूल + CURLOPT_RANGE खंडन करता है, जो एकल बड़ी फ़ाइल (विशाल परिदृश्य .tar.gz) के लिए और गति बढ़ा सकता है। दोनों पूरक हैं लेकिन समान फ़ाइलों को बदलते हैं, F1 स्थिर होने के बाद वृद्धिशील रूप से करने का सुझाव।

  2. मानचित्र भेजने का अनुकूलन सत्यापित करें कि jrpm डिफ़ॉल्ट रूप से मानचित्र संपीड़न (zstd/lzma) चालू करता है या नहीं; बड़े मानचित्रों पर विभिन्न संपीड़न एल्गोरिदम के समय की तुलना करें।

  3. Rust सर्वर रनटाइम (दीर्घकालिक वास्तुकला संदर्भ) Openttd-Cluster का otc-engine (Admin/RCON, Prometheus मीट्रिक्स, क्लस्टर failover, वेब पैनल, स्नैपशॉट ब्रिज) पूर्ण Rust इंजीनियरिंग FFI एकीकरण पर निर्भर करता है, जो "अगली पीढ़ी के सर्वर"-स्तरीय परिवर्तन है, न कि पैच-स्तरीय मर्ज; jrpm वर्तमान में शुद्ध C++ एकल बाइनरी बनाए रखता है।

  4. गेम सिमुलेशन प्रदर्शन

    • बड़े मानचित्र + बड़ी संख्या में वाहनों पर economy/linkgraph पैरामीटर (linkgraph_settings.ini) पर ध्यान दें;
    • यदि चरम प्रदर्शन की आवश्यकता है, तो settings_game.economy. वर्ग और पथ-खोज ऊपरी सीमा पैरामीटर (pathfinding सेटिंग्स) का अध्ययन करें।

पाँच, सत्यापन सुझाव ​

  • सर्वर खोलें openttd-jrpm -D -c server.cfg, कई jrpm क्लाइंट के साथ वास्तविक परीक्षण: जुड़ने का समय, फ्रेम सिंक स्थिरता (कोई desync संकेत नहीं), CPU/मेमोरी उपयोग;
  • सामग्री डाउनलोड: content_download_parallel=8 सेट करके NewGRF के एक बैच को डाउनलोड करने के समय की तुलना करें;
  • कमजोर नेटवर्क लोड परीक्षण: max_lag_time और sync_freq के संयोजन का परीक्षण करें, स्थिर सीमा खोजें।

अंतिम अपडेट: