banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix Lỗi 502 Bad Gateway của Web server  XML
  [Question]   Lỗi 502 Bad Gateway của Web server 05/07/2012 14:06:00 (+0700) | #1 | 266217
[Avatar]
lam_nhi
Member

[Minus]    0    [Plus]
Joined: 14/10/2008 17:13:09
Messages: 15
Offline
[Profile] [PM]
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!
[Up] [Print Copy]
  [Question]   Lỗi 502 Bad Gateway của Web server 05/07/2012 14:58:13 (+0700) | #2 | 266222
[Avatar]
conmale
Administrator

Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
[Profile] [PM]

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.
[Up] [Print Copy]
  [Question]   Lỗi 502 Bad Gateway của Web server 05/07/2012 16:08:21 (+0700) | #3 | 266227
[Avatar]
lam_nhi
Member

[Minus]    0    [Plus]
Joined: 14/10/2008 17:13:09
Messages: 15
Offline
[Profile] [PM]
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 smilie , em đành up lên mediafire, a xem giùm hộ em ạ: http://www.mediafire.com/?cxax5870hl1z12a
Em cảm ơn anh!
[Up] [Print Copy]
  [Question]   Lỗi 502 Bad Gateway của Web server 05/07/2012 16:51:13 (+0700) | #4 | 266231
[Avatar]
conmale
Administrator

Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
[Profile] [PM]
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.
[Up] [Print Copy]
  [Question]   Lỗi 502 Bad Gateway của Web server 05/07/2012 17:04:56 (+0700) | #5 | 266233
[Avatar]
conmale
Administrator

Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
[Profile] [PM]
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.
[Up] [Print Copy]
  [Question]   Lỗi 502 Bad Gateway của Web server 06/07/2012 09:38:29 (+0700) | #6 | 266292
[Avatar]
lam_nhi
Member

[Minus]    0    [Plus]
Joined: 14/10/2008 17:13:09
Messages: 15
Offline
[Profile] [PM]
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!
[Up] [Print Copy]
  [Question]   Lỗi 502 Bad Gateway của Web server 06/07/2012 09:54:05 (+0700) | #7 | 266294
[Avatar]
conmale
Administrator

Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
[Profile] [PM]

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.
[Up] [Print Copy]
  [Question]   Lỗi 502 Bad Gateway của Web server 06/07/2012 11:05:16 (+0700) | #8 | 266299
[Avatar]
lam_nhi
Member

[Minus]    0    [Plus]
Joined: 14/10/2008 17:13:09
Messages: 15
Offline
[Profile] [PM]

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!
[Up] [Print Copy]
  [Question]   Lỗi 502 Bad Gateway của Web server 02/01/2013 13:13:00 (+0700) | #9 | 272353
beside
Member

[Minus]    0    [Plus]
Joined: 25/12/2012 21:39:41
Messages: 1
Offline
[Profile] [PM]
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)
[Up] [Print Copy]
  [Question]   Lỗi 502 Bad Gateway của Web server 08/01/2013 16:19:46 (+0700) | #10 | 272536
emdinoiay
Member

[Minus]    0    [Plus]
Joined: 20/11/2012 19:50:22
Messages: 17
Offline
[Profile] [PM]
- 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ửsmilie
- 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ụ smilie

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;

[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 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|