Настройка nginx+apache

12
skyscr
На сайте с 26.01.2010
Offline
68
4985

Помогите донастроить nginx+apache (mod_php+xcache)

страница грузится быстро, а вот php запросы в базу и обратный вывод картинок долго тупит...

текст и шаблон загрузился, после по очереди появляются картинки, как-будто нельзя в несколько потоков их грузить???

конечно может дело в Joomla+Virtuemart, но при пользовании apache+fcgi или nginx+fcgi, нигде такого тормоза не наблюдал... копаюсь второй день, пробую разные конфигурации apache2.conf и nginx.conf, но почему-то не помогают, или не там копаю, или у меня всё работает как должно :(

Люди добрые, что сделать?

последняя версия apache2.conf

ServerRoot "/etc/apache2"
PidFile ${APACHE_PID_FILE}
Timeout 60
KeepAlive Off
MaxKeepAliveRequests 50
KeepAliveTimeout 5

<IfModule mpm_prefork_module>
StartServers 2
MinSpareServers 2
MaxSpareServers 20
MaxClients 20
MaxRequestsPerChild 1000
</IfModule>

<IfModule mpm_worker_module>
StartServers 2
MinSpareThreads 2
MaxSpareThreads 30
ThreadLimit 210
ThreadsPerChild 210
MaxClients 25
MaxRequestsPerChild 1000
</IfModule>

<IfModule mpm_event_module>
StartServers 2
MaxClients 25
MinSpareThreads 15
MaxSpareThreads 55
ThreadLimit 64
ThreadsPerChild 55
MaxRequestsPerChild 1000
</IfModule>

User www-data
Group www-data
AccessFileName .htaccess

<Files ~ "^\.ht">
Order allow,deny
Deny from all
Satisfy all
</Files>

DefaultType text/plain
HostnameLookups Off

ErrorLog /var/log/apache2/error.log
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf
Include /etc/apache2/httpd.conf
Include /etc/apache2/ports.conf
Include /etc/apache2/conf.d/
Include /etc/apache2/sites-enabled/

nginx.conf

user www-data;
worker_processes 2;
pid /var/run/nginx.pid;

events {
worker_connections 64000;
use epoll;
}

http {

limit_req_zone $binary_remote_addr zone=one:10m rate=3r/s;
include /opt/nginx/conf/mime.types;
default_type application/octet-stream;

sendfile on;

keepalive_timeout 65;
client_max_body_size 100m;
tcp_nodelay on;
gzip off;

server {
listen 80;
server_name domen.in www.domen.in;
location / {
limit_req zone=one burst=30;
proxy_pass http://127.0.0.1:81;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ~* ^.+.(phpmyadmin/|administrator/) {
proxy_pass http://127.0.0.1:81;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css)$ {
root /home/domen.in;
error_page 404 = @fallback;
}
location @fallback {
proxy_pass http://127.0.0.1:81;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}

location ~ /\index.html {
root /home/domen.in;
}}}
V
На сайте с 05.08.2007
Offline
87
#1

skyscr, Вы какие mpm модули используете? Покажите, пож.,


httpd -V|grep MPM

---

Victor

С уважением, Victor (http://adm-lib.ru)
skyscr
На сайте с 26.01.2010
Offline
68
#2

httpd не знает такой команды....

подключенные модули к апачу:

alias,

auth_basic,

authn_file,

authz_default,

authz_groupfile,

authz_host,

authz_user,

autoindex,

cgi,

deflate,

dir,

env,

filter,

mime,

mod-evasive,

negotiation,

php5,

reqtimeout,

rewrite,

rpaf,

setenvif,

ssl,

status,

suexec

skyscr добавил 14.10.2010 в 14:20


Server version: Apache/2.2.14 (Ubuntu)
Server built: Aug 19 2010 03:20:29
Server's Module Magic Number: 20051115:23
Server loaded: APR 1.3.8, APR-Util 1.3.9
Compiled using: APR 1.3.8, APR-Util 1.3.9
Architecture: 32-bit
Server MPM: Prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APACHE_MPM_DIR="server/mpm/prefork"
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=128
-D HTTPD_ROOT=""
-D SUEXEC_BIN="/usr/lib/apache2/suexec"
-D DEFAULT_PIDLOG="/var/run/apache2.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_LOCKFILE="/var/run/apache2/accept.lock"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="/etc/apache2/mime.types"
-D SERVER_CONFIG_FILE="/etc/apache2/apache2.conf"

хотите сказать дело в prefork?

skyscr добавил 14.10.2010 в 18:15

как переконфигурировать с prefork на worker и когда понадобится возможно ли вернуть обратно?

Andreyka
На сайте с 19.02.2005
Offline
822
#3

Причем тут prefork/worker?

Джумла написана плохо и серверные настройки не спасут

Не стоит плодить сущности без необходимости
skyscr
На сайте с 26.01.2010
Offline
68
#4

как какая разница, worker делает многопоточность из скриптов, а prefork ждет каждый скрипт и из-за этого надежнее workera, но тормознее... или я не прав, Вы же админ =)

skyscr добавил 14.10.2010 в 19:33

как понял мне поможет

"sudo apt-get install apache2-mpm-worker"

seocore
На сайте с 25.09.2006
Offline
143
#5
skyscr:
как какая разница, worker делает многопоточность из скриптов, а prefork ждет каждый скрипт и из-за этого надежнее workera, но тормознее... или я не прав, Вы же админ =)

skyscr добавил 14.10.2010 в 19:33
как понял мне поможет
"sudo apt-get install apache2-mpm-worker"

причем тут mpm? - вы же пишете, что картинки многопоточно не грузит, они же у Вас nginx'ом раздаются :D

вообще prefork и надежнее, хотя и несколько тише, в случае, если статику раздает nginx вы от worker'а не только плюса не получите, а наоборот кучу проблем поимеете :)

по всей видимости keepalive надо крутить, nginx очень хочет отдать все картинки через одну сессию (как совет - уменьшите таймаут keepalive'а до 2-5 секунд)

Инструменты для веб-мастера: кластеризатор СЯ (https://goo.gl/MQWfqO), все запросы конкурента (https://goo.gl/hd5uHS), дешевые XML-лимиты (https://goo.gl/aDZbPI)
skyscr
На сайте с 26.01.2010
Offline
68
#6

включил keepalive и сделал 2 сек и 0 сек, разницы нет, может сделать отдельно локацию для папки с нужными картинками через apache.... или мож что-нить ещё посоветуете?

A
На сайте с 08.12.2009
Offline
51
#7

Попробуйте сделать, чтобы nginx полностью все брал от апача. Пусть у него конфиг будет вида:

server {
listen 80;
server_name *.*;
# proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=one:50m;
# access_log /var/log/nginx/localhost.access.log;
access_log off;

location / {
proxy_pass proxy_pass http://127.0.0.1:81;;
proxy_redirect off;

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

client_max_body_size 100m;
client_body_buffer_size 128k;

# proxy_connect_timeout 90;
# proxy_send_timeout 90;
# proxy_read_timeout 90;
# proxy_buffer_size 8k;
# proxy_buffers 8 64k;
# proxy_busy_buffers_size 64k;
# proxy_temp_file_write_size 64k;
}
}

Я оставил закоменченными значения буферов для прокси, которые я когда то взял уже-не-помню-откуда с целью оптимизации работы nginx как прокси.

Данный конфиг работает на нескольких достаточно нагруженных серверах.

skyscr:
включил keepalive и сделал 2 сек и 0 сек, разницы нет, может сделать отдельно локацию для папки с нужными картинками через apache.... или мож что-нить ещё посоветуете?

Оставьте включенным - с ним лучше будет.

bugsmoran
На сайте с 18.02.2010
Offline
223
#8
skyscr:
как какая разница, worker делает многопоточность из скриптов, а prefork ждет каждый скрипт и из-за этого надежнее workera, но тормознее... или я не прав, Вы же админ =)

Да, но чтобы реализовать это преимущество, нужно было Джумлу писать как многопоточное приложение. А как верно заметил Andreyka:

Andreyka:
Джумла написана плохо и серверные настройки не спасут

К тому же prefork на то и prefork, чтобы держать уже готовые форки заранее. И нет разницы создать новую нить в воркере или подключиться к готовому форку в префорке.

skyscr
На сайте с 26.01.2010
Offline
68
#9

alivar, настройки не помогли...

bugsmoran, всё понятно, спасибо за подробности... =)

думаю оставить 1 prefork, но не знаю даже примерного лимита посещений, есть примеры?

и ещё хотел узнать почему-то ссылки настроенные в flash баннере, когда заходишь с адресом без www. открывает, а с www. не видит...

R
На сайте с 14.02.2010
Offline
77
#10

а почему бы не использовать nginx+php-fpm например и не мучаться? если уж не тормозит...

или если таки действительно

skyscr:
php запросы в базу и обратный вывод картинок долго тупит

то я бы прикрутил кеширование, дабы не дергать несчастную БД и пхп из-за каких-то там смайликов\иконок, пусть даже и фоток...

покажите как там в Joomla грузятся эти картинки, попробуем составить конфиг...

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий