我的Web服务器正在处理一个巨大的文件,然后发送响应.我没有运气,尝试过各种nginx超时参数.我已经尝试了这个问题中推荐的参数,但是,我仍然在nginx错误日志中看到带有错误的超时页面.
1 upstream prematurely closed connection while reading response header from upstream,client: 10.0.42.97, server:
Run Code Online (Sandbox Code Playgroud)
这是我的nginx.conf
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
client_header_timeout 600;
client_body_timeout 600;
send_timeout 600;
proxy_read_timeout 600;
fastcgi_buffers 8 16k;
fastcgi_buffer_size 32k;
fastcgi_read_timeout 600;
gzip on;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_proxied any;
gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript application/json;
server_names_hash_bucket_size 64;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
Run Code Online (Sandbox Code Playgroud)
我仍然不时看到502 Bad网关,出现上述错误.什么可能是错的任何指针?我的输入文件是csv文件,如果有帮助的话.任何指针或建议?
我怎样才能解决这个问题?如何增加超时时间?
我正在使用ning async http客户端来实现非阻塞性的优点.做一个苹果对苹果测试(非阻塞与阻塞),我发现非阻塞版本正在提供更多的请求样本,但异步http客户端正在创建比其阻塞对应物更多的线程.这是预期还是我遗失的东西?
以下是压力测试的数字
Async Http Client
jMeter - 2 threads, 120 seconds, 1 sec ramp up
Peak threads : 270
Heap usage: 600mb
Peak cpu usage: 30%
Total samples: 18228
Blocking version
jMeter - 2 threads, 120 seconds, 1 sec ramp up
Peak threads: 118
heap usage: 260mb
cpu usage: 18%
total samples: 1472
Run Code Online (Sandbox Code Playgroud)
我正在创建一个连接线程池(重用它们)
AsyncHttpClientConfig.Builder builder = new AsyncHttpClientConfig.Builder();
builder.setRequestTimeoutInMs(2000);
builder.setMaximumConnectionsPerHost(10);
builder.setMaximumConnectionsTotal(100);
client = new AsyncHttpClient(builder.build());
Run Code Online (Sandbox Code Playgroud)
这里有什么我想念的吗?我试着查看线程转储以查看创建线程的内容,但没有找到任何有用的东西.我敢打赌,生成的每个http连接都有一个线程,用于在异步http客户端的I/O完成时触发回调.