我最近把我的CentOS 7机器从Apache移到了nginx上,而我仍然在研究这些差异。 我只注意到我的一个服务器块的一个问题是,访问和错误日志文件实际上并没有被logging到,使得难以排除潜在的问题。 我的站点的服务器块如下所示: server { listen 80; server_name example.com; root /var/www/example.com/public_html; index index.php; access_log /var/www/example.com/logs/example.com_access.log; error_log /var/www/example.com/logs/example.com_error.log error; location / { index index.php index.html; } location /reports { autoindex on; } location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } error_page 404 /var/www/html/404.html; error_page 500 502 503 504 […]
我的服务器与DigitalOcean的计划如下: 2 Core Processor 2 GB Memory 我的网站正在接受成千上万的访问者,但是,两个CPU核心都是@ 100%: 这个问题似乎与php-fpm和nginx: worker process 。 我已经对服务器做了很多优化,但是我仍然无法让它冷静下来。 这是我的nginx.conf : user www-data; worker_processes 2; pid /run/nginx.pid; events { worker_connections 2048; # multi_accept on; } http { ## # Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; server_tokens off; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # server_names_hash_bucket_size […]
我目前大部分的静态文件服务需要使用Amazon S3,但是我的每月账单变得非常昂贵。 我使用日志和高峰时间做了一些粗略的计算,我最昂贵的亚马逊桶正在处理 100 180 Mbps的stream量。 大多在50K以下的图像。 S3在存储和冗余方面非常有帮助,但是如果我可以提供帮助的话,我并不需要为带宽和GET请求付费。 我在自己的数据中心有很多廉价的带宽,所以我configuration了一个nginx服务器作为caching代理,然后用大量的文件(大约240GB)启动了caching,这样我的磁盘就不会像疯了一样写空的caching。 我尝试切换, 我的服务器窒息 。 它看起来像我的磁盘是问题 – 这台机器有4个1 TB的SATA磁盘(梭子鱼XT)设置在RAID 10中。这是唯一的我手上有足够的存储空间用于此。 我很确定nginx的设置是正确的,因为我已经使用它作为另一个较小的Amazon存储区的caching代理。 假设这是单个机器的合理stream量,也许SSD是值得一试的。 如果你处理大量的静态文件服务,你使用什么硬件? 附加信息 Nginx:worker_connections = 4096,worker_rlimit_nofile 16384,worker_processes 8,open_file_cache max = 100000不活动= 60m文件系统:ext4,挂载noatime,barrier = 0,data = writeback,nobh
我有一个nginx反向代理。 服务器接近每秒600-700个请求。 我有一个穆宁HTTP加载时间插件是输出这个: http://monitor.wingify.com/munin/visualwebsiteoptimizer.com/lb1.visualwebsiteoptimizer.com-http_loadtime.html 现在,问题是我看到图中的一些尖峰。 预期的响应时间应该始终低于200ms。 我正在关注系统日志和消息,但我无法弄清楚这个的真正原因。 我想知道是否有任何好的HTTP响应时间分析系统,我可以安装/embedded到这个nginx服务器,并得到一个详细的报告/日志分解不同的事情所花费的时间,究竟是什么原因的尖峰。 性能分析系统还将帮助我了解瓶颈,如何进一步优化延迟。 现在最重要的是调查HTTP加载时间图中的峰值的原因(类似模式由外部监视器 – Pingdom报告),并修复它以获得一致的响应时间 谢谢
我不确定这是一个Nginx或PHP-FPM设置,但长日志行被截断。 有没有增加最大日志行长度的设置?
我有一个caching失效系统,所以我需要设置caching为CSS | js永不过期。 我试过这个 location ~* \.(js|css)$ { # |png|jpg|jpeg|gif|ico expires max; #log_not_found off; # what's this for? } 这就是我在萤火虫中看到的: 正如你所看到的,请求仍在进行,尽pipe他们只收到一个“未修改”的响应。 但是我想完全避免它们,这有可能吗? 另外,我读过一年以上的期限已经或将被认为是无效的标准。 真的吗? 编辑 让我完成@ DisgruntledGoat的答案: 正常访问url,比如点击一个链接或者在url栏中input:cache works,只有一个请求为这个url发出,而0为这个资产。 F5重新加载:发出许多请求,但是您收到资产的所有“304未修改”响应,因此不会下载它们 Ctrl + F5重新加载没有caching:许多请求,所有'200成功',所有的资产再次下载。
我已经在Ubuntu(Amazon EC2)上创build了一个nginx / unicorn / capistrato安装程序,主要遵循本指南 。 我猜一切都是应该设置的,但是当我启动Unicorn时,我在日志中得到了这个错误(很多): E, [2012-09-08T08:57:20.658092 #12356] ERROR — : Operation not permitted (Errno::EPERM) /home/deployer/apps/bridgekalenderen.no/shared/bundle/ruby/1.9.1/gems/unicorn-4.3.1/lib/unicorn/worker.rb:82:in `initgroups' 我看到它与用户的权限有关,但我无法弄清楚我所遗漏的内容。 服务器启动很好,如果我用sudo(或者rvmsudo,真的)启动它。 用户具有sudofunction,我已经chmod了几次应用程序,所以文件权限应该没问题。 / tmp中的独angular兽套接字由部署者用户拥有,所以不应该成为问题。 有人有线索在哪里看? 更新: 经过一番挖掘,我发现它归结为一个调用Process.initgroups抛出EPERM。 我已经通过irbvalidation了这一点。 我无法弄清楚是什么原因导致了错误。 用户可以读取/etc/group 。
在configuration了django,gunicorn,supervisor和nginx的服务器上运行非常高的stream量。 但很多时候,我倾向于看到502错误。 所以我检查了nginx日志,看看是什么错误,这是logging: [错误] 2388#0:* 208027连接()到unix:/tmp/gunicorn-ourapp.socket失败(11:资源暂时不可用),同时连接到上游 任何人都可以帮助debugging可能会导致这种情况发生? 这是我们的nginxconfiguration: sendfile on; tcp_nopush on; tcp_nodelay off; listen 80 default_server; server_name imp.ourapp.com; access_log /mnt/ebs/nginx-log/ourapp-access.log; error_log /mnt/ebs/nginx-log/ourapp-error.log; charset utf-8; keepalive_timeout 60; client_max_body_size 8m; gzip_types text/plain text/xml text/css application/javascript application/x-javascript application/json; location / { proxy_pass http://unix:/tmp/gunicorn-ourapp.socket; proxy_pass_request_headers on; proxy_read_timeout 600s; proxy_connect_timeout 600s; proxy_redirect http://localhost/ http://imp.ourapp.com/; #proxy_set_header Host $host; #proxy_set_header X-Real-IP […]
从2天前开始,nginx开始支持websocket连接,因此我试图让我的nginx-nodejs-socket.io应用程序在没有HAproxy ect的情况下工作(虽然没有多less运气)。 我想要达到的是nginx发送只有websocket连接请求到支持的服务器,或websocket服务器,socket.io更准确,而在同一时间nginx将服务PHP文件,所有的静态内容,包括HTML文件。我不想快递服务静态内容(如果这是可能的话)。 这是我的nginx.conf #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } 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"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout […]
我写了一个快速的Python服务器来服务重采样的图像。 例如,URL可能类似于http://images.domain.com/resample/100×100/9f362e1994264321.jpg 。 重新采样图像是昂贵的,caching层是必要的。 这似乎是一个nginx反向代理将是一个很好的select, 这里和这里似乎是好的地方开始。 但是,有一个问题。 有数百万的图像,所以通过在文件系统中存储http://images.domain.com/resample/100×100/9f362e1994264321.jpg作为/home/nginx/cache/resample/100×100/9f362e1994264321.jpg (或类似的东西),最终cache/resample/100×100/将有数以百万计的文件,这将使文件查找非常低效。 我在处理这个问题的同时通过将原始图像分布在许多子目录中来存储原始图像,例如9f/36/9f362e1994264321.jpg 。 但是,我不知道我怎么可能做同样的nginx。 我可以改变url做同样的事情,如果这是唯一的解决scheme,我宁愿保持url尽可能漂亮。 我可以用nginx做这个吗? 如果不用nginx,我可以做点别的,比如清漆吗?