Nginx Error 504 Gateway Timeout เกิดจากอะไรได้บ้างครับ

สวัสดีครับ

nginx Error 504 Gateway Timeout เกิดจากอะไรได้บ้างครับ
มีทางแก้ไหมครับ

ขอบคุณครับ

Gateway Timeout ครับ เอา nginx ไปครอบ apache อีกทีใช่ไหมครับ ลองปรับ buffer เพิ่มอีก ลองดูครับ

อารมณ์ประมานว่า nginx timeout ระหว่างรอข้อมูลจาก apache น่ะนะมันเลยบอกว่า Gateway Timeout

คือ nginx รอ response จาก backend (ซึ่งในที่นี่คือ apache ล่ะมั่ง) นานเกินไปจนเกิด timeout ครับ

วิธีแก้ … แก้ที่ code ครับ

วิธีแก้ … แก้ที่ code ครับ << เห็นด้วยอย่างแรง

เป็นที่โค้ดก็ได้ครับ หรือเป็นที่ A[COLOR=#333333]pache ล่ม หรือค้างก็ได้ครับ
ผมเคยเจอเว็บใหญ่ๆอย่าง [/COLOR]blognone กับ jquery.com ขึ้น 503 อยู่เป็นบางครั้งด้วยครับ :189bbdde:

บางทีถ้าใช้ buffer น้อยๆ หรือปิดเลย จะขึ้นบ่อยครับ แต่ก็ต้องดู apache ด้วยแหละว่ามันไหวมั้ย

เอ ทำไมข้อมูลอันนี้กับของผมไม่ตรงกันเลยล่ะครับ … ตามที่ผมเข้าใจ / เจอมา เข้าใจว่าแบบนี้นะครับ

error 502 คือ bad gateway ครับ (คือ nginx รันอยุ่ แต่ backend ตาย)
error 503 คือ custom error page ครับ (คือเขียน rules ดักไว้ตามที่ต้องการ เช่น maintenace, serve huge load อะไรพวกนี้)
error 504 คือ gateway timeout ครับ ซึ่งถ้าตามที่ผมเข้าใจ อธิบายได้ตามข้างล่างฮะ

ง่ายๆครับ “timeout” ครับ ค่าที่ปรับก็จะเป็นค่าต่างๆที่มันเกี่ยวกะเวลาครับ เช่น ระยะเวลา process php, timeout ต่างๆใน nginx.conf อะไรพวกนี้

php.ini

max_execution_time
request_terminate_timeout

nginx.conf

proxy_connect_timeout, send_timeout หรืออะไรต่างๆนาๆที่มันมี timeout น่ะนะ

หรือถ้าใช้ nginx เป็น web server นี่ลองดูพวก fastcgi_timeout ต่างๆครับ

สำหรับกรณี buffer น้อยไป (ถ้าเอา nginx มาเป็น reverse proxy แล้ว cache static files นี่ ภาพขนาดใหญ่ๆ มันจะ มาไม่ครบ / คุณภาพห่วย ครับ)

ขอบคุณที่คำตอบครับ กำลังหาวิธีการแก้ไขอยู่ครับ

Config

http
{
include mime.types;
default_type application/octet-stream;

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';


#access_log  logs/access.log  main;


sendfile        on;
tcp_nodelay 	on;
tcp_nopush      on;


#keepalive_timeout  3;
#keepalive_timeout  65;


client_max_body_size 2048m;


gzip  on;


scgi_temp_path  temp/uwsgi_temp 1 2;
uwsgi_temp_path  temp/uwsgi_temp 1 2;


fastcgi_connect_timeout 1;
fastcgi_buffers 8 128k;
fastcgi_buffer_size 128k;	
fastcgi_read_timeout 300; 

access_log off;

open_file_cache max=1000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;	


gzip_static on;	

server_tokens off;

}

php script มัน reply กลับ apache ช้าไปครับ
ตัว nginx มันรอไม่ไหวเลย timeout ไปก่อน

มีวิธีปรับแต่งไหมครับ