Я пытался запустить NGINX на моем компьютере с OSX 10.7 Lion. У меня он работает, однако простые html-страницы каждые несколько загружаются долго; например:
<html>
<body>
test
</body>
</html>
То же самое происходит с php:
<?php
echo('hi');
?>
Если я нажимаю «Обновить», кажется, что он почти перестраивает всю страницу, прежде чем отрендерить и создать какой-то объект. Просто мучительно медленно ..
Это кажется наиболее частым, если я немного кодирую, а затем возвращаюсь, чтобы обновить страницу. (10-20 + секунд, затем возврат и обновление страницы занимает хорошие 4-6 секунд). Кажется, что после простоя требуется время, чтобы снова проснуться.
Я выдергиваю волосы, пытаясь понять, что происходит, надеюсь, кто-нибудь сможет пролить свет на это для меня.
Конфигурация системы:
ОС: OSX 10.7.2
Процессор: 2 двухъядерных процессора Intel Xeon с тактовой частотой 2,66 ГГц
Память: 8 ГБ 667 МГц
Версия Nginx: 1.0.11
Версия PHP: 5.3.9
Я установил это из чистого формата OSX (который, как я думал, изначально был моей ошибкой, к сожалению, это не так).
Обновить
После обновления моего файла error_log, чтобы он содержал отладку по предложению Fox в комментариях, я теперь вижу, что в моем error_log появляется следующее сообщение:
2012/01/23 11:57:02 [info] 88015#0: *26 client closed prematurely connection
while reading client request line, client: 127.0.0.1, server: sandbox.local
Обновление два
После проверки с помощью Chrome я обнаружил, что разрешение DNS занимает немного времени?
Обновление три - РЕШЕНО
После обновления 2 исправлен файл / etc / hosts для использования:
127.0.0.1 sandbox.local
И
:: 1 sandbox.local
Благодаря @thinice я смог пройти через strace и заметить, что все запросы, нацеленные на localhost напрямую из telnet, всегда выполнялись мгновенно; который затем вызвал проверку DNS и, наконец, привел к его обнаружению!
Я не уверен, что это ошибка nginx; когда я ранее устанавливал appache, он работал нормально.
============
Вот мои файлы конфигурации:
Конфигурация NGINX
user petrogad staff;
worker_processes 2;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
pid /usr/local/ngnix/var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type text/plain;
server_tokens off;
sendfile on;
tcp_nopush on;
keepalive_timeout 10;
# gzip on;
# gzip_comp_level 2;
# gzip_proxied any;
# gzip_types text/plain text/css text/javascript application/json application/x-javascript text/xml application/xml application/xml+rss;
index index.html index.php;
include /usr/local/ngnix/conf/sites-enabled/*.link;
}
Конфигурация сервера
{
listen 80;
server_name sandbox.local;
root /www/sandbox;
access_log /Users/petrogad/logs/ngnix-sites/sandbox_log.txt;
error_log /Users/petrogad/logs/ngnix-sites/sandbox_log.txt;
location /
{
# First attempt to serve request as file, then
# as directory, then fall back to index.html
try_files $uri $uri/ /index.html;
autoindex on;
}
include /usr/local/ngnix/conf/php.conf;
}
PHP Включить
fastcgi_intercept_errors on;
location ~ \.php$
{
#fastcgi_intercept_errors on;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_read_timeout 60; # Set fairly high for debugging
fastcgi_pass 127.0.0.1:9001; # Non-default port
fastcgi_index index.php;
}
Быстрая конфигурация CGI
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
Конфигурация PHP-FPM
[global]
pid = /usr/local/php-5.3.9/var/run/php-fpm.pid
daemonize = yes
[www]
listen = 127.0.0.1:9001
user = petrogad
group = staff
pm = dynamic
pm.max_children = 10
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 10
pm.max_requests = 500
Попытка простого решения со следующей конфигурацией nginx, такой же медленный результат, как указано выше:
user petrogad staff;
worker_processes 2;
pid /usr/local/ngnix/var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type text/plain;
server_tokens off;
sendfile on;
tcp_nopush off;
keepalive_timeout 0;
index index.html;
server
{
listen 80;
server_name sandbox.local;
root /www/sandbox;
access_log /Users/petrogad/logs/ngnix-sites/sandbox_log.txt;
error_log /Users/petrogad/logs/ngnix-sites/sandbox_log.txt;
location /
{
autoindex on;
}
}
}
Начните с удаления всех ненужных параметров конфигурации.
Получите настройку до конфигурации по умолчанию "Я обслуживаю только файлы HTML". Удалите оптимизацию.
Медленно начните добавлять аспекты по несколько, перезапустите стек и протестируйте.
Если вы амбициозны, можете бежать strace
на одном серверном процессе, чтобы получить тайминги. Взгляните на это для ускоренного курса.