Lỗi không liên tục khi sử dụng mod_proxy để làm proxy ngược cho dịch vụ SOAP


17

Tôi nhận được lỗi này cứ sau vài phút khi sử dụng mod_proxy làm proxy ngược cho dịch vụ web SOAP. Có thể có 3 hoặc 4 yêu cầu diễn ra mỗi giây, vì vậy chúng tôi đang nói khoảng 1 hoặc 2 trong số hàng nghìn người có lỗi này.

[Tue Nov 23 11:44:14 2010] [error] [client 172.16.1.31] (20014)Internal error: proxy: error reading status line from remote server soap1.server:8888
[Tue Nov 23 11:44:14 2010] [error] [client 172.16.1.31] proxy: Error reading from remote server returned by /someapp/path/to/web/service

Điều này gây ra yêu cầu thất bại. Nếu tôi có máy khách kết nối trực tiếp với máy chủ xà phòng mà không sử dụng proxy, thành công là 100%, do đó, sự cố dường như nằm ở proxy

Cấu hình trông như thế này. Mục đích là để chuyển sang một máy chủ dự phòng nếu máy chủ chính không có sẵn:

<Proxy balancer://apicluster>  
BalancerMember http://soap1.server:8888 lbset=0 
BalancerMember http://soap2.server:8888 lbset=1 
</Proxy>  

ProxyPass /someapp balancer://apicluster/someapp 
ProxyPassReverse / balancer://apicluster/someapp 

Có ai chạy vào đây và tìm thấy một sửa chữa? Có một số đề cập trong các báo cáo lỗi nhưng không có giải pháp. Điều duy nhất có thể bất thường là yêu cầu của khách hàng có thể là 100 MB hoặc lớn hơn, vì vậy yêu cầu có thể mất nhiều thời gian hơn bạn mong đợi cho một cuộc gọi SOAP.


Câu trả lời của David Purdue (SetEnv proxy-init-not-pooled 1) là một câu trả lời hợp lệ hiện nay (2016).
MattBianco

Câu trả lời:


27

Trong trường hợp người khác chạy vào đây. Đây là một lỗi trong mod_proxy có thể tránh được bằng cách đặt các dòng này vào httpd.conf của bạn:

SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1

https://issues.apache.org/ormszilla/show_orms.cgi?id=37770

Để biết thông tin về những gì các biến này xem mod_proxytài liệu . Họ có một phần cụ thể, Điều chỉnh giao thức, giải quyết các biến này.


5

Lưu ý tài liệu về Apache tại đây: http://httpd.apache.org/docs/2.2/mod/mod_proxy_http.html

Có vẻ như có một điều kiện cuộc đua trong mod_proxy_http, nhưng có thể tránh được bằng cách bao gồm:

SetEnv proxy-initial-not-pooled 1

Điều này ngăn Apache sử dụng kết nối gộp nếu đây là yêu cầu ban đầu.

Tài liệu lưu ý rằng cài đặt này sẽ giảm hiệu suất.


1
proxy-initial-not-pooledchỉ hiệu quả nếu bạn có một bản vá cụ thể, mà tôi tin rằng đó không phải là một phần của httpd 2.2. Tôi không biết về httpd 2.4. Xem bz.apache.org/bugzilla/show_bug.cgi?id=37770#c88
kubanczyk

0

Bạn cũng có thể loại bỏ thông báo lỗi liên quan này ( AH01102: error reading status line from remote server) bằng cách sử dụng mô-đun apache mod numqtimeout và chỉ thị conf này:

RequestReadTimeout header=30

Bạn có thể phải kích hoạt mô-đun reqtimeout, như sau:

$ sudo a2enmod reqtimeout
$ sudo apache2ctl restart
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.