सवाल यूनिक्स सॉकेट बनाम टीसीपी / आईपी होस्ट: पोर्ट


क्या कोई मुझे किसी यूनिक्स सॉकेट फ़ाइल बनाम एक टीसीपी / आईपी लोकलहोस्ट का उपयोग करने के पेशेवरों और विपक्ष का वर्णन कर सकता है: सर्वर पर सेवाओं को स्थापित करते समय बंदरगाह (उबंटू, एफडब्ल्यूआईडब्ल्यू)?

इस विशेष उदाहरण में यह एक पायथन डब्लूएसजीआई सर्वर (यूडब्ल्यूएसजीआई) के लिए है, लेकिन मुझे सामान्य रूप से दिलचस्पी है (उदाहरण के लिए, मुझे पता है कि आप MySQL को दोनों तरीकों से सेट कर सकते हैं)।

मुझे एहसास है कि टीसीपी / आईपी का उपयोग करने का मतलब है कि सेवाओं को अन्य मशीनों के संपर्क में लाया जा सकता है, लेकिन मुझे स्थानीय स्तर पर सेवाओं तक पहुंचने पर कोई प्रदर्शन ट्रेडऑफ है या नहीं।

चीयर्स।


40
2017-10-27 13:30


मूल


दोनों शानदार जवाब और वास्तव में उपयोगी - धन्यवाद! :) - Ludo


जवाब:


यूनिक्स सॉकेट थोड़ा तेज़ हैं क्योंकि आपके पास टीसीपी-ओवरहेड नहीं है। यदि आपको लगता है कि यह प्रदर्शन हानि सर्वर लोड का सवाल है। यदि आपके पास बहुत अधिक सर्वर लोड नहीं है तो आप इसे पहचान नहीं पाएंगे।

यदि आप जेल (फ्रीबीएसडी) या कुछ अन्य वर्चुअलाइजेशन तकनीक का उपयोग उदाहरण को अलग करने के लिए करते हैं वेबसर्वर से MySQL-Server, आप अक्सर सॉकेट के बजाय tcp / ip सेटअप का उपयोग करते हैं। हालांकि फ़ायरवॉल नियमों को एक्सेस को प्रतिबंधित करने की आवश्यकता है।

आपको यह पता लगाना होगा कि क्या आपका सिस्टम भारी भार में है ताकि एक सॉकेट जरूरी हो या आप एक अच्छे सिस्टम डिज़ाइन (सेवाओं को अलग करने) पर ध्यान केंद्रित कर सकें, तो एक टीसीपी / आईपी समाधान बेहतर होगा।

तो एक लंबा जवाब कम करें:

हां, एक प्रदर्शन अंतर है, सॉकेट तेज हैं। यदि आप उच्च सर्वर लोड नहीं पीड़ित हैं, तो बस चुनें कि आपके सिस्टम के डिज़ाइन के लिए क्या बेहतर है।


37
2017-10-27 13:38



पुन: सॉकेट तेजी से हैं ... क्या वे दोनों सॉकेट नहीं हैं? - Bart Silverstrim
@ बार्ट सिल्वरस्ट्रिम: नहीं, सॉकेट सॉकेट हैं; टीसीपी में सॉकेट जैसी एपीआई है - Javier
मेरा मानना ​​है कि उन्हें "यूनिक्स सॉकेट" और "इंटरनेट सॉकेट" कहा जाता है। (socket(AF_INET, SOCK_STREAM, ...)) - grawity
मैंने अभी कुछ mysql-query का परीक्षण php-mysql (यूनिक्स बनाम टीसीपी-सॉकेट, दोनों स्थानीयहोस्ट) के साथ किया है। उदाहरण के लिए गैर-परिवहन कारकों को खत्म करने के लिए "SQL_NO_CACHE 1 चुनें"। मापने योग्य कोई अंतर नहीं था। दोनों का औसत 0.25 एमएस था, दोनों के लिए सबसे अच्छा समय 0.1 9 एमएस था। - jens


यह मूल रूप से प्रदर्शन और लचीलापन के बीच एक व्यापार है। यूनिक्स डोमेन सॉकेट आपको थोड़ा बेहतर प्रदर्शन देगा, जबकि स्थानीयहोस्ट से जुड़ी एक सॉकेट आपको थोड़ा बेहतर पोर्टेबिलिटी देता है। आप स्थानीय ऐप से सिर्फ एक अलग होस्टनाम में आईपी पता बदलकर सर्वर ऐप को अन्य ओएस पर आसानी से ले जा सकते हैं।

एक यूनिक्स डोमेन सॉकेट सर्वर और क्लाइंट प्रक्रियाओं के बीच आईपीसी तंत्र बनाने के लिए स्थानीय फ़ाइल सिस्टम का उपयोग करता है। यूनिक्स डोमेन सॉकेट कनेक्ट होने पर आपको कहीं भी / var में एक फ़ाइल दिखाई देगी।

यदि आप पूरी तरह से अंतिम प्रदर्शन समाधान की तलाश में हैं तो आप साझा मेमोरी आईपीसी का पता लगाना चाहेंगे। लेकिन, यह थोड़ा और जटिल है।


9
2017-10-28 00:31





यूनिक्स डोमेन सॉकेट के पेशेवर।

  1. एक्सेस को यूनिक्स उपयोगकर्ता अनुमति प्रणाली के माध्यम से या तो सॉकेट पर या सर्वर से कनेक्टिंग क्लाइंट के उपयोगकर्ता नाम को पढ़ने के द्वारा अनुमतियों को सेट करके प्रबंधित किया जा सकता है।
  2. अनजाने में बाहरी दुनिया में सॉकेट को उजागर करने का कम मौका। उदाहरण के लिए यदि सर्वर एक वेब प्रॉक्सी भी चलाता है तो वह अनजाने में स्थानीयहोस्ट पर सॉकेट से कनेक्शन की अनुमति दे सकता है।

यूनिक्स डोमेन सॉकेट के विपक्ष

  1. गैर-यूनिक्स सिस्टम के लिए पोर्टेबल नहीं है।
  2. Chroots, जेलों या इसी तरह के साथ अजीब हो सकता है

2
2017-10-19 15:23