Nginx Tuning.
rodrigda
nginx-forum at forum.nginx.org
Wed Feb 24 15:41:32 UTC 2016
Alright here is the situtation. I have nginx and with passenger running. I
can send load to the server and after a certain point I just start getting
500's back. I have not been able to see what is causing it. I have made
tweaks to the config based on some blog posts but I can't get past a certain
point. I get to about 1400 requests per minute and than start seeing 500s.
The configs are below. It almost seems like I might be hitting an OS or
server limit that I can't seem to find. The server is a 8CPU, 8GB cloud
server.
nginx.conf
user www-data;
worker_processes 8;
worker_rlimit_nofile 30000;
error_log /var/log/nginx/error.log debug;
pid /var/run/nginx.pid;
events {
worker_connections 3500;
use epoll;
}
http {
log_format main
'$status:$request_time:$upstream_response_time:$pipe:$body_bytes_sent
$connection $
remote_addr $host $remote_user [$time_local] "$request" "$http_referer"
"$http_user_agent" "$http_x_f
orwarded_for" $upstream_addr $upstream_cache_status "in: $http_cookie"'
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_requests 100;
keepalive_timeout 65;
gzip on;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_proxied any;
gzip_vary off;
gzip_types text/plain text/css application/x-javascript text/xml
application/xml application/rss+xm
l application/atom+xml text/javascript application/javascript
application/json text/mathml;
gzip_min_length 1000;
gzip_disable "MSIE [1-6]\.";
variables_hash_max_size 1024;
variables_hash_bucket_size 64;
server_names_hash_bucket_size 64;
types_hash_max_size 2048;
types_hash_bucket_size 64;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
site.conf
server {
listen 0.0.0.0:80;
location ~ ^/api/.* {
include /etc/nginx/conf.d/include/restrict.include;
}
## redirect http to https ##
location ~ .* {
return 301 https://$host$request_uri;
}
}
server {
listen 0.0.0.0:443;
server_name somesite.net;
## set client body size to 15M, to address file upload limitations ##
client_max_body_size 15M;
include /etc/nginx/conf.d/actual_config/*.include;
ssl on;
ssl_certificate /etc/nginx/self_signed;
ssl_certificate_key /etc/nginx/cert.key;
# Display the maintenance page if it exists
if (-f $document_root/system/maintenance.html){
rewrite ^(.*)$ /system/maintenance.html last;
break;
}
# If the file exists as a static file serve it directly without
# running all the other rewite tests on it
if (-f $request_filename) {
break;
}
# this is the meat of the rails page caching config
# it adds .html to the end of the url and then checks
# the filesystem for that file. If it exists, then we
# rewite the url to have explicit .html on the end
# and then send it on its way to the next config rule.
# if there is no file on the fs then it sets all the
# necessary headers and proxies to our upstream mongrels
if (-f $request_filename.html) {
rewrite (.*) $1.html break;
}
# Use any statically compressed javascript or stylesheet files
location ~* ^/(javascripts|stylesheets)/.*\.(js|css) {
#gzip_static on;
}
}
passenger.conf
passenger_root
/opt/ruby/lib/ruby/gems/2.2.0/gems/passenger-enterprise-server-5.0.24;
passenger_ruby /opt/ruby/bin/ruby;
passenger_max_pool_size 31;
passenger_min_instances 31;
passenger_pre_start https://llocalhost;
passenger_log_level 2;
site.conf
location / {
passenger_enabled on;
rails_env lt;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log debug;
passenger_base_uri /;
alias /home/sites/site/current/public/$1;
passenger_app_root /home/sites/site/current;
index index.html index.htm;
}
#Asset displaying.
location ~ ^/(assets)/ {
gzip_static on;
expires max;
add_header Cache-Control public;
root /home/sites/site/current/public;
}
Posted at Nginx Forum: https://forum.nginx.org/read.php?2,264775,264775#msg-264775
More information about the nginx
mailing list