这是一个创建于 2700 天前的主题,其中的信息可能已经有所发展或是发生改变。
最近遇到个奇怪的问题。
我的服务是搭在 aws 上面,现在在 elb 后面挂了 4 台 ec2 实例,都是 c3large 类型的。ec2 的架构就是 nginx+php-fpm,数据库是用的 aws 的 rds。
由于历史遗留问题,会在每天 16 点的时候有一波大量的请求过来,其实也没多少 我观察了一下 elb 的请求数 大概每分钟也就才 3000 左右,正常情况是 300-400 每分钟的请求数。但是在这种情况下居然会导致 elb 延迟非常高 我看了下大概会持续有 5 分钟左右到 40s 的延迟了。这些请求我看了下日志以及以前的的 nginx 配置,直接在 nginx 就被返回 405 的 http code 了,根本就没请求到 php 里面去,但是就这么点量就让 nginx 扛不住了?
大家帮我看下我的 nginx 这部分配置是否有问题呢?
location ~ .*\.(php|php5)?$ {
if ($arg_r = 'api') {
return 405;
}
}
下面是 nginx 的整体配置
user www www;
worker_processes 8;
error_log /data/logs/nginx_error.log crit;
pid /usr/local/nginx/nginx.pi
worker_rlimit_nofile 65535;
events
{
use epoll;
worker_connections 65535;
}
http
{
include mime.types;
default_type application/octet-stream;
#charset gb2312;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 8m;
sendfile on;
tcp_nopush on;
keepalive_timeout 60;
tcp_nodelay on;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 128k;
fastcgi_buffers 6 128k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
#fastcgi_intercept_errors on;
server_tokens off;
real_ip_header X-Forwarded-For;
set_real_ip_from 0.0.0.0/0;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 4;
gzip_types text/plain application/x-javascript text/css application/xml text/json application/javascript application/json;
gzip_vary on;
}
谢谢
7 条回复 • 2017-07-05 09:18:42 +08:00
|
|
1
imherer 2017-07-04 13:50:32 +08:00
elb 监控里可以看到延迟的啊,你看看 究竟是不是 elb 延迟导致的
|
|
|
2
klakekent 2017-07-04 14:25:18 +08:00
@ imherer 现在就是在 elb 里面能看到这个时间段延迟厉害 但是这个并不能确定是什么导致的
|
|
|
5
stabc 2017-07-04 14:58:27 +08:00
加一行 “ error_page 405 =200 $uri;” 试试。 另外你这个峰值才补到一百每秒,而且还用了 RDS,把 ELB 撤了直接一个 c3large 就顶住了吧。
|
|
|
6
monsterxx03 2017-07-04 15:26:44 +08:00
你监控上看的到的应该是 elb 的总时间,取日志看里面的 backend_processing_time, 这是你业务的实际时间. 还有看看 nginx 的日志
|