[Question] Lỗi 502 Bad Gateway của Web server |
05/07/2012 14:06:00 (+0700) | #1 | 266217 |
|
lam_nhi
Member
|
0 |
|
|
Joined: 14/10/2008 17:13:09
Messages: 15
Offline
|
|
Dear All,
Hệ thống của mình gồm có: Nginx làm proxy và Jetty chạy SSO được setup trên cùng 1 server. Gần đây, nó thường sảy ra lỗi, khi dùng browser vào web: https://mydomain.vn thì lỗi: 502 Bad Gateway , Mình nghĩ lỗi này là do jetty có vấn đề, vì khi restart lại jetty thì hệ thống lại bình thường. Hiện tại, mình chỉ biết khắc phục bằng cách viết script auto restart jetty khi log có lỗi mà không biết cách khắc phục triệt để lỗi đó như thế nào vì không biết nguyên nhân do đâu. Vậy nên, mong anh em giúp đỡ
Đây là log của nó:
2012/07/02 11:05:32 [error] 11914#0: *53 connect() failed (111: Connection refused) while connecting to upstream, client: 113.160.158.93, server: mydomain.vn, request: "GET /login HTTP/1.1", upstream: "http://127.0.0.1:8080/login", host: "mydomain.vn"
2012/07/02 11:05:32 [error] 11914#0: *53 connect() failed (111: Connection refused) while connecting to upstream, client: 113.160.158.93, server: mydomain.vn, request: "GET /login HTTP/1.1", upstream: "http://127.0.0.1:8080/login", host: "mydomain.vn"
2012/07/02 11:05:38 [error] 11914#0: *53 connect() failed (111: Connection refused) while connecting to upstream, client: 113.161.76.50, server: mydomain.vn, request: "GET /login HTTP/1.1", upstream: "http://127.0.0.1:8080/login", host: "mydomain.vn"
Mình xin cảm ơn! |
|
|
|
|
[Question] Lỗi 502 Bad Gateway của Web server |
05/07/2012 14:58:13 (+0700) | #2 | 266222 |
|
conmale
Administrator
|
Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
|
|
lam_nhi wrote:
Dear All,
Hệ thống của mình gồm có: Nginx làm proxy và Jetty chạy SSO được setup trên cùng 1 server. Gần đây, nó thường sảy ra lỗi, khi dùng browser vào web: https://mydomain.vn thì lỗi: 502 Bad Gateway , Mình nghĩ lỗi này là do jetty có vấn đề, vì khi restart lại jetty thì hệ thống lại bình thường. Hiện tại, mình chỉ biết khắc phục bằng cách viết script auto restart jetty khi log có lỗi mà không biết cách khắc phục triệt để lỗi đó như thế nào vì không biết nguyên nhân do đâu. Vậy nên, mong anh em giúp đỡ
Đây là log của nó:
2012/07/02 11:05:32 [error] 11914#0: *53 connect() failed (111: Connection refused) while connecting to upstream, client: 113.160.158.93, server: mydomain.vn, request: "GET /login HTTP/1.1", upstream: "http://127.0.0.1:8080/login", host: "mydomain.vn"
2012/07/02 11:05:32 [error] 11914#0: *53 connect() failed (111: Connection refused) while connecting to upstream, client: 113.160.158.93, server: mydomain.vn, request: "GET /login HTTP/1.1", upstream: "http://127.0.0.1:8080/login", host: "mydomain.vn"
2012/07/02 11:05:38 [error] 11914#0: *53 connect() failed (111: Connection refused) while connecting to upstream, client: 113.161.76.50, server: mydomain.vn, request: "GET /login HTTP/1.1", upstream: "http://127.0.0.1:8080/login", host: "mydomain.vn"
Mình xin cảm ơn!
Bồ chỉ có nginx đứng trước jetty mà thôi? Giữa nginx và jetty có gì không?
Bồ thảy cái config của nginx và jetty lên coi? |
|
What bringing us together is stronger than what pulling us apart. |
|
|
|
[Question] Lỗi 502 Bad Gateway của Web server |
05/07/2012 16:08:21 (+0700) | #3 | 266227 |
|
lam_nhi
Member
|
0 |
|
|
Joined: 14/10/2008 17:13:09
Messages: 15
Offline
|
|
Hi, anh Conmale!
Vâng, chỉ có nginx đứng trc jetty và giữa chúng không có gì!
Còn đây là file config của 2 thằng:
+ nginx.conf
Code:
#user nobody;
worker_processes 20;
worker_rlimit_nofile 51200;
events {
use epoll;
worker_connections 51200;
}
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"';
client_header_timeout 10m;
client_body_timeout 10m;
send_timeout 10m;
client_max_body_size 4m;
client_body_buffer_size 256k;
connection_pool_size 256;
client_header_buffer_size 1k;
large_client_header_buffers 4 2k;
request_pool_size 4k;
output_buffers 1 32k;
postpone_output 1460;
tcp_nopush on;
tcp_nodelay on;
sendfile on;
keepalive_timeout 120;
gzip on;
gzip_comp_level 3;
gzip_min_length 1100;
gzip_buffers 4 8k;
gzip_proxied any;
gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;
upstream my_domain_vn {
server 127.0.0.1:8080;
}
server {
listen 443;
server_name my.domain.vn;
ssl on;
ssl_certificate /usr/crtkiu2012/server.crt;
ssl_certificate_key /usr/crtkiu2012/server.key;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/my.domain.vn.log;
error_log /var/log/nginx/my.domain.vn.vn_error.log;
location / {
proxy_pass http://my_domain_vn;
proxy_wwwect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
}
server {
listen 80;
server_name www.my.domain.vn;
location / {
rewrite ^/(.*)$ https://my.domain.vn/$1 wwwect;
}
}
server {
listen 80;
server_name my.domain.vn;
location / {
rewrite ^/(.*)$ https://my.domain.vn/$1 wwwect;
}
}
}
* file jetty.xml, em không up lên được forum , em đành up lên mediafire, a xem giùm hộ em ạ: http://www.mediafire.com/?cxax5870hl1z12a
Em cảm ơn anh! |
|
|
|
|
[Question] Lỗi 502 Bad Gateway của Web server |
05/07/2012 16:51:13 (+0700) | #4 | 266231 |
|
conmale
Administrator
|
Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
|
|
Sao chỉ thấy config của nginx, còn config của jetty đâu?
Config của nginx nhìn chung ok, chỉ có 2 điểm:
1. Server của em có bao nhiêu core mà set đến 20 worker processes?
2. Sao không set proxy_read_timeout ? Directive này ấn định nginx (như một proxy) phải đợi jetty trả lời trong bao lâu trước khi quyết định hồi báo (với trình duyệt) status 502.
Ngoài ra, có phải nginx và jetty chạy trên cùng server? Nếu đúng vậy thì nên chỉnh:
proxy_pass http://my_domain_vn;
thành:
proxy_pass http://localhost:<port>;
Nếu http://my_domain_vn (jetty) là một server khác thì coi chừng bị firewall có giới hạn connections giữa nginx và jetty hoặc jetty config để điều chỉnh số acceptors cho thích hợp. Tham khảo thêm ở đây:
http://wiki.eclipse.org/Jetty/Howto/Configure_Connectors
Điều chỉnh jetty connectors đều cần thiết cho cả trường hợp nginx và jetty cùng chạy trên 1 host hoặc chạy trên 2 hosts khác nhau. |
|
What bringing us together is stronger than what pulling us apart. |
|
|
|
[Question] Lỗi 502 Bad Gateway của Web server |
05/07/2012 17:04:56 (+0700) | #5 | 266233 |
|
conmale
Administrator
|
Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
|
|
OK, vừa xem xong jetty.xml của em.
Proxy của em thì chỉnh để nhận đến 51200 connections với 20 worker processes nhưng trong jetty thì chỉ có 2 Acceptors thì quá sức không cân bằng. Proxy cần phải điều chỉnh đề tương quan với backend jetty không thì 1 đầu thì rộng, 1 đầu thì quá hẹp và sẽ dẫn đến 502 dài dài.
Ngoài việc điều chỉnh Acceptors, em cần phải thêm 1 attribute acceptQueueSize:
<Set name="acceptQueueSize">512</Set>
Giá trị 512 này cần được điều chỉnh để tương quan với giá trị mà nginx accepts bên ngoài.
Em cần điều chỉnh trên kernel để tương quan với acceptQueueSize nữa:
/sbin/sysctl -w net.core.somaxconn=512 |
|
What bringing us together is stronger than what pulling us apart. |
|
|
|
[Question] Lỗi 502 Bad Gateway của Web server |
06/07/2012 09:38:29 (+0700) | #6 | 266292 |
|
lam_nhi
Member
|
0 |
|
|
Joined: 14/10/2008 17:13:09
Messages: 15
Offline
|
|
Vâng, Em cảm ơn Anh! Hệ thống này, em setup cả nginx,jetty trên cùng 1 server và nó cấu hình: CPU 2 cores, RAM 4G, hiện tại tối đa chỉ 4-50 connections đồng thời.
Với những ý kiến của anh, em fix lại như sau:
Với Kernel: Code:
/sbin/sysctl -w net.core.somaxconn=512
Với nginx.conf:
Code:
worker processes 2;
....
upstream localhost {
server 127.0.0.1:8080;
}
....
proxy_pass http://localhost;
proxy_read_timeout 75;
proxy_connect_timeout 75;
Với jetty.xml:
Code:
<Set name="connectors">
.....
<Set name="Acceptors">2</Set>
<Set name="acceptQueueSize">512</Set>
.....
</Set>
Đó là những chỉnh sửa của em, anh xem, rồi cho ý kiến ạ!
Em xin cảm ơn! |
|
|
|
|
[Question] Lỗi 502 Bad Gateway của Web server |
06/07/2012 09:54:05 (+0700) | #7 | 266294 |
|
conmale
Administrator
|
Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
|
|
lam_nhi wrote:
Vâng, Em cảm ơn Anh! Hệ thống này, em setup cả nginx,jetty trên cùng 1 server và nó cấu hình: CPU 2 cores, RAM 4G, hiện tại tối đa chỉ 4-50 connections đồng thời.
Với những ý kiến của anh, em fix lại như sau:
Với Kernel: /sbin/sysctl -w net.core.somaxconn=512
Với nginx.conf:
worker processes 2;
....
upstream localhost {
server 127.0.0.1:8080;
}
....
proxy_pass http://localhost;
proxy_read_timeout 75;
proxy_connect_timeout 75;
Với jetty.xml:
<Set name="connectors">
.....
<Set name="Acceptors">2</Set>
<Set name="acceptQueueSize">512</Set>
.....
</Set>
Đó là những chỉnh sửa của em, anh xem, rồi cho ý kiến ạ!
Em xin cảm ơn!
Nếu jetty listen ở localhost:8080 thì proxy_pass cũng phải "pass" vô localhost:8080 không thì proxy không biết pass đi đâu hết.
Cứ thử đi rồi chỉnh lại từ từ cho thích hợp. Những con số tôi đưa ra chỉ là để minh hoạ. Đừng dùng những con số ấy mà phải tự thử nghiệm và điều chỉnh cho thích hợp. |
|
What bringing us together is stronger than what pulling us apart. |
|
|
|
[Question] Lỗi 502 Bad Gateway của Web server |
06/07/2012 11:05:16 (+0700) | #8 | 266299 |
|
lam_nhi
Member
|
0 |
|
|
Joined: 14/10/2008 17:13:09
Messages: 15
Offline
|
|
conmale wrote:
Nếu jetty listen ở localhost:8080 thì proxy_pass cũng phải "pass" vô localhost:8080 không thì proxy không biết pass đi đâu hết.
Cứ thử đi rồi chỉnh lại từ từ cho thích hợp. Những con số tôi đưa ra chỉ là để minh hoạ. Đừng dùng những con số ấy mà phải tự thử nghiệm và điều chỉnh cho thích hợp.
Vâng, Anh!
Ở đây, port listen e đã set ở upstream rồi mà, ở proxy_pass có cần set lại không? Còn các thông số khác, e sẽ theo dõi để chỉnh sửa dần dần, có vấn đề gì em xin anh em trên HVA tư vấn thêm ạ!
Thanks All! |
|
|
|
|
[Question] Lỗi 502 Bad Gateway của Web server |
02/01/2013 13:13:00 (+0700) | #9 | 272353 |
beside
Member
|
0 |
|
|
Joined: 25/12/2012 21:39:41
Messages: 1
Offline
|
|
Em đang bị trường hợp như sau:
nếu duyệt url: mydomain.local?p= thì kết quả bình thường status: 200OK
nếu duyệt url (không có tên của tham số): mydomain.local?= thì báo lỗi 502 Bad Gateway
Máy em chỉ có:
1. CentOS release 5.8 (Final)
2. Server version: Apache/2.2.3
3. PHP 5.4.9 (cli) (built: Nov 22 2012 12:59:20) |
|
|
|
|
[Question] Lỗi 502 Bad Gateway của Web server |
08/01/2013 16:19:46 (+0700) | #10 | 272536 |
emdinoiay
Member
|
0 |
|
|
Joined: 20/11/2012 19:50:22
Messages: 17
Offline
|
|
- Lỗi này lúc trước mình cũng bị, nguyên nhân chủ yếu là đợi phản hồi quá lâu nên mới sinh ra lỗi trên, bạn tăng proxy_connect_timeout,proxy_send_timeout,proxy_read_timeout lên cao như chú conmale reply thử
- Nếu bạn dùng mô hình Load balancer thì dùng upstream, còn không thì chỉ cần khai báo ở dòng proxy_pass:IP:port cũng được
Ví dụ
Code:
limit_conn perip 10;
limit_conn_log_level error;
proxy_pass http://IP:80;
proxy_wwwect off;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
|
|
|
Users currently in here |
1 Anonymous
|
|
Powered by JForum - Extended by HVAOnline
hvaonline.net | hvaforum.net | hvazone.net | hvanews.net | vnhacker.org
1999 - 2013 ©
v2012|0504|218|
|
|