2012-10-01 12 views
8

Tôi liên tục gặp phải 504 lỗi cổng khi tập lệnh php của tôi cần chạy lâu hơn 60 giây.504 Cổng truyền thông thời gian chờ ra khỏi đền

Tôi đang ở trên ngôi đền truyền thông trên một máy chủ chuyên dụng. Tôi đã liên lạc với truyền thông đền thờ và họ đã được hữu ích nhưng không ai trong số suggesion của họ dường như làm việc cho tôi tôi đã nói để chỉnh sửa tập tin này.

/etc/httpd/conf.d/fcgid.conf

mà tôi phải bên dưới

LoadModule fcgid_module modules/mod_fcgid.so 

<IfModule mod_fcgid.c> 

<IfModule !mod_fastcgi.c> 
    AddHandler fcgid-script fcg fcgi fpl 
</IfModule> 

    FcgidIPCDir /var/run/mod_fcgid/sock 
    FcgidProcessTableFile /var/run/mod_fcgid/fcgid_shm 
    FcgidIdleTimeout 300 
    FcgidMaxRequestLen 1073741824 
    FcgidProcessLifeTime 10000 
    FcgidMaxProcesses 64 
    FcgidMaxProcessesPerClass 15 
    FcgidMinProcessesPerClass 0 
    FcgidConnectTimeout 600 
    FcgidIOTimeout 600 
    FcgidInitialEnv RAILS_ENV production 
    FcgidIdleScanInterval 600 

</IfModule> 

vì vậy tôi đã cố gắng tối đa mọi thứ càng nhiều như tôi có thể, để kiểm tra điều này tôi chỉ cần chạy hàm dưới đây.

function test504(){ 
     @set_time_limit(0); 
     sleep(60); 
     echo "true"; 
    } 

Ngủ sẽ làm việc trên bất kỳ giá trị dưới 60 giây trở về đúng nhưng trên 60 tôi nhận được 504 lỗi cổng.

phpinfo(); kết quả đầu ra

max_execution_time 600 
max_input_time 180 

Tôi đã xem một số bài đăng về cách tăng fastcgi_connect_timeout này nhưng không biết tìm ở đâu trên ngôi đền truyền thông.

bất cứ ai giúp đỡ Can nhờ

CẬP NHẬT VẪN CANT FIX NÀY

sau khi trò chuyện với sự hỗ trợ tôi đã nói với tôi cần phải chỉnh sửa nginx.conf? và đã được chuyển đến bài đăng này http://blog.secaserver.com/2011/10/nginx-gateway-time-out/

không thể xử lý bất kỳ giá trị nào trong lưu trữ của tôi. client_header_timeout client_body_timeout send_timeout fastcgi_read_timeout

tập tin nginx.conf của tôi trông như thế này

#error_log /var/log/nginx/error.log info; 

#pid  /var/run/nginx.pid; 


events { 
    worker_connections 1024; 
} 


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 /var/log/nginx/access.log main; 

    sendfile  on; 
    #tcp_nopush  on; 
    #keepalive_timeout 0; 
    keepalive_timeout 120; 
    #tcp_nodelay  on; 

    #gzip on; 
    #gzip_disable "MSIE [1-6]\.(?!.*SV1)"; 

    server_tokens off; 

    include /etc/nginx/conf.d/*.conf; 
} 

này được lái xe cho tôi điên bất cứ đề nghị ???

CẬP NHẬT tôi đã quản lý để sắp xếp điều này cuối cùng sau khi rất nhiều cơn đau đầu đã thêm một bài đăng trên blog về cách tôi đã khắc phục sự cố này tại đây. http://devsforrest.com/116/boost-settings-on-media-temple-for-maximum-settings

Hy vọng điều này sẽ giúp người

+1

Tôi nghĩ đây là cài đặt mới vì tôi chưa bao giờ gặp sự cố với máy chủ cũ nhưng đã bật máy chủ mới và chạy vào đây. Bài đăng của bạn thực sự đã giúp ích rất nhiều. Ứng dụng của tôi đang chạy ở chế độ Mô-đun Apache và điều này vẫn khắc phục được sự cố. Thực sự hữu ích! – David

+1

Hey @ user1503606 - cập nhật lần cuối của bạn hoạt động! Đăng nó làm câu trả lời của bạn và nhận được tín dụng cho việc tìm kiếm giải pháp. – squarecandy

+0

Tôi khuyên bạn nên cấu trúc lại ứng dụng của mình để xóa nhu cầu chạy tập lệnh trong hơn 200 mili giây. Bạn có thể cần phải di chuyển một số logic nặng vào nền. Sử dụng bất kỳ công nghệ nào sau đây để giúp bạn với điều đó: AJAX, Hàng đợi thư, memcache, các tệp cờ. –

Trả lời

3

tôi cũng có cùng một vấn đề và tôi giải quyết nó bằng cách chỉnh sửa tập tin nginx.conf. Trong hầu hết các trường hợp, điều này có thể được sửa bằng cách thêm/tăng chỉ thị send_timeout trong nginx.conf.

Tìm tập tin nginx.conf của bạn (thường nằm ở /usr/local/nginx/nginx.conf hoặc đôi khi /etc/nginx/sites-available/default), mở nó bằng nano hoặc bất kỳ trình soạn thảo văn bản khác, và thêm những dòng sau đây giữa http {} để nó trông giống như:

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 /var/log/nginx/access.log main; 

sendfile  on; 
#tcp_nopush  on; 
#keepalive_timeout 0; 
keepalive_timeout 120; 
#tcp_nodelay  on; 

#gzip on; 
#gzip_disable "MSIE [1-6]\.(?!.*SV1)"; 

server_tokens off; 

send_timeout 10m; 

include /etc/nginx/conf.d/*.conf; 
} 

Trong trường hợp của tôi, tôi đã phải tăng một số chỉ thị khác như:

client_header_timeout 10m; 
client_body_timeout 10m; 
send_timeout 10m; 
fastcgi_read_timeout 10m; 

quá.

Một khi bạn đã chỉnh sửa các tập tin, chỉ cần tải lại nginx với:

kill -HUP `ps -ef | grep nginx | grep master | awk {'print $2'}` 

hoặc

sudo service nginx restart 

Điều đó sẽ sửa chữa nó.

(tôi thấy các chỉ thị ở đây: http://blog.secaserver.com/2011/10/nginx-gateway-time-out/)

PS: Tôi thấy nhận xét của OP với một liên kết đến blog của họ nhưng tôi nghĩ rằng việc thêm các thông tin liên quan ở đây có thể giúp đỡ.