Score:1

nginx ทำให้บริการที่เหลือของฉันช้าลง 5 เท่า

ธง us

ฉันมีบริการ REST อย่างง่ายที่ตั้งค่าโดยกำเนิด (ปฏิบัติการแบบสแตนด์อโลน) จัดการ 135k/rps บริการกำลังทำงานบน localhost:8181

เกณฑ์มาตรฐาน autocannon ที่ทำงานจากผลลัพธ์ของเครื่องจักรที่แยกจากกัน:

âââââââââââââ¬ââââ ââââââ¬ââââââââââ¬â ว âââ¬âââââââââââ¬âââ ââââââââ¬âââââââââ â
â สถิติ â 1% â 2.5% â 50% â 97.5% â เฉลี่ย â Stdev â ต่ำสุด â
âââââââââââââ¼ââââ ââââââ¼ââââââââââ¼ââ ว ว ââââââ¼ââââââââââ¤
â ความต้องการ/วินาที â 58335 â 58335 â 109247 â 135039 â 106779.2 â 18509.53 â 58312 â
âââââââââââââ¼ââââ ââââââ¼ââââââââââ¼ââ ว ว ââââââ¼ââââââââââ¤
ไบต์/วินาที 9.74 MB 9.74 MB 18.3 MB 22.5 MB 17.8 MB 3.09 MB 9.74 MB 9.74 MB
âââââââââââââ´ââââ ââââââ´ââââââââââ´â ว âââ´âââââââââââ´âââ ââââââââ´âââââââââ â

เมื่อพร็อกซีตั้งค่าอัปสตรีมพื้นฐานผ่าน nginx ประสิทธิภาพจะลดลงอย่างมาก:

âââââââââââââ¬ââââ ââââââ¬ââââââââââ¬â ว âââ¬âââââââââââ¬âââ âââââââ¬ââââââââââ
â สถิติ â 1% â 2.5% â 50% â 97.5% â เฉลี่ย â Stdev â ต่ำสุด â
âââââââââââââ¼ââââ ââââââ¼ââââââââââ¼ââ ว ว âââââ¼ââââââââââ¤
â คำขอ/วินาที â 13359 â 13359 â 14991 â 19103 â 15767.12 â 1878.98 â 13352 â
âââââââââââââ¼ââââ ââââââ¼ââââââââââ¼ââ ว ว âââââ¼ââââââââââ¤
ไบต์/วินาที 2.53 MB 2.53 MB 2.83 MB 3.61 MB 2.98 MB 355 kB 2.52 MB
âââââââââââââ´ââââ ââââââ´ââââââââââ´â ว âââ´âââââââââââ´âââ âââââââ´ââââââââââ

นี่คือการกำหนดค่า nginx ของฉัน (ฉันได้ทดลองเล็กน้อยซึ่งส่งผลให้มีการปรับปรุงเล็กน้อยมาก):

nginx.conf

ผู้ใช้ www-data;
worker_processes อัตโนมัติ
pid /run/nginx.pid;
รวม /etc/nginx/modules-enabled/*.conf;

เหตุการณ์ {
    worker_connections 768;
    เปิด multi_accept;
}

http {
    open_file_cache สูงสุด = 200,000 ไม่ใช้งาน = 20s;
    open_file_cache_valid 30 วินาที;
    open_file_cache_min_uses 2;
    open_file_cache_errors บน;

    access_log off;
    error_log off;

    ส่งไฟล์บน;
    tcp_nopush บน;
    tcp_nodelay ปิด;
    keepalive_timeout 35;
    types_hash_max_size 2048;

    client_max_body_size 100M;


    รวม /etc/nginx/mime.types;
    แอปพลิเคชัน default_type/octet-stream;


    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    เปิด ssl_prefer_server_ciphers;


    gzip ปิด;
    gzip_min_length 10240;
    gzip_comp_level 1;
    gzip_vary บน;
    gzip_disable msie6;
    gzip_proxied หมดอายุแล้ว ไม่มีแคช ไม่มีที่เก็บ การตรวจสอบสิทธิ์ส่วนตัว

    ปิด server_tokens;

    รวม /etc/nginx/conf.d/*.conf;
    รวม /etc/nginx/sites-enabled/*;
}

ไซต์ที่เปิดใช้งาน/reverse-proxy.conf

ต้นน้ำ pindap_api {
    little_conn; 
    เซิร์ฟเวอร์ localhost:8181;
}

เซิร์ฟเวอร์ {
    ฟัง 80;
    server_name api.pindap;

    access_log off;
    error_log off;

    ที่ตั้ง / {
        ปิด proxy_buffering;
        proxy_pass http://pindap_api;
    }
}

เซิร์ฟเวอร์ {
    ฟัง 80;

    server_name pindap;         

        access_log off;
        error_log off;

        ที่ตั้ง / {
        ปิด proxy_buffering;
        proxy_pass http://localhost:8181;
        }
}

อะไรคือสาเหตุของสิ่งนี้? ฉันจะลองอะไรได้อีก

djdomi avatar
za flag
https://stackoverflow.com/questions/64862439/nginx-reverse-proxy-low-performance - อาจช่วยได้
djdomi avatar
za flag
ฉันยังขาด `proxy_http_version 1.1;` และสำหรับการเชื่อมต่อซ้ำ `proxy_set_header Connection "";` เพื่อใช้ keepalive นี่อาจเป็นปัญหาคอขวด
enko avatar
us flag
@djdomi ขอบคุณสำหรับลิงค์และคำแนะนำเหล่านี้ ฉันเห็นการปรับปรุงเล็กน้อย (~ +5k rps) เมื่อเพิ่ม ```proxy_http_version 1.1;``` มิฉะนั้นก็เหมือนกัน ฉันได้ลองใช้การตั้งค่าระบบบางอย่างในโพสต์ที่คุณกล่าวถึง ช่วงพอร์ตคือ 32768 ถึง 60999 แต่ด้วยการตั้งค่า 1024 ถึง 65000 จึงไม่มีผลกระทบใดๆ ฉันคิดว่าอาจเป็นเพราะเซิร์ฟเวอร์ dev นี้กำลังเรียกใช้เดสก์ท็อป ubuntu 20.04 และอาจมีปัญหาเคอร์เนล / การกำหนดค่าน้อยกว่าที่เห็นได้ชัดเจน ดังนั้นฉันจะทดสอบกับการเปิดตัวเซิร์ฟเวอร์เพื่อดูว่าสิ่งนี้ยังคงเกิดขึ้นหรือไม่
enko avatar
us flag
อัปเดตด่วน: ฉันตัดสินใจลองใช้พร็อกซีอื่นเพื่อดูว่าปัญหาระบบโดยรวมหรือไม่ HAProxy จัดการ 114k rps มันยังช้ากว่าเนทีฟ 135k rps แต่เรียกใช้บริการ REST บนเครื่องเดียวกันที่คาดไว้ นอกจากนี้ ฉันพบว่าการกำหนดค่า HAProxy นั้นง่ายกว่าที่จะทำงานด้วย - ดังนั้นฉันคิดว่าฉันจะใช้มันแทน เนื่องจากโปรเจ็กต์นี้ไม่ต้องการเซิร์ฟเวอร์ไฟล์แบบสแตติกและจะพึ่งพาไมโครเซอร์วิสทั้งหมด

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา