ประสิทธิภาพของ unix sockets เทียบกับพอร์ต TCP


46

ตัวอย่างเช่นใน php-fpm:

#listen = 127.0.0.1:9000
listen = /var/run/php-fpm/php-fpm.sock

มีความแตกต่างด้านประสิทธิภาพที่สำคัญระหว่างการใช้ unix socket-based Listeners ผ่านพอร์ต TCP หรือไม่? (ไม่ใช่เฉพาะสำหรับ PHP แต่โดยทั่วไปแล้วมันแตกต่างกันไปในแต่ละบริการหรือไม่)

คำตอบ:


42

ซ็อกเก็ตโดเมน UNIX ควรให้ประสิทธิภาพที่ดีกว่าซ็อกเก็ต TCP ผ่านอินเทอร์เฟซย้อนกลับ (การคัดลอกข้อมูลน้อยลง, การสลับบริบทน้อยลง)

ระวังแม้ว่าซ็อกเก็ตนั้นสามารถเข้าถึงได้จากโปรแกรมที่ทำงานบนเซิร์ฟเวอร์เดียวกันเท่านั้น (ไม่มีการรองรับเครือข่ายอย่างชัดเจน) และโปรแกรมนั้นจำเป็นต้องได้รับอนุญาตที่จำเป็นในการเข้าถึงไฟล์ซ็อกเก็ต


25

เมื่อคุณใช้ TCP คุณกำลังใช้เครือข่ายสแต็กทั้งหมด แม้ว่าคุณจะอยู่บนเครื่องเดียวกันนี่ก็หมายความว่าแพ็กเก็ตนั้นถูกห่อหุ้มและ decapsulated เพื่อใช้เน็ตเวิร์กสแต็กและโปรโตคอลที่เกี่ยวข้อง

หากคุณใช้ซ็อกเก็ตโดเมน unix คุณจะไม่ถูกบังคับให้ทำตามโปรโตคอลเครือข่ายทั้งหมดที่จำเป็นเป็นอย่างอื่น ซ็อกเก็ตจะถูกระบุโดย inodes บนฮาร์ดไดรฟ์ของคุณเท่านั้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.