Производительность и PHP-акселератор

Главные вкладки

Аватар пользователя edhel edhel 5 октября 2007 в 16:42

Поставили вчера пхп-акселератор (eAccelerator v0.9.5.1). Сравнил время генерации страничек для юзеров (не анонимов):

было(мс) стало(мс) уменьшение времени (разы)
главная: 1040 360 2.88
новости: 1760 860 2.05
страница: 1100 370 2.97
карта сайта: 1129 390 2.89
поиск: 3200! 2300! 1.39

Кол-во записей в таблицах БД:

node: 1780
node_revisions: 1943
url_alias: 418
comments: 3509
term_data: 226
menu: 486

Вообще скорость работы не впечатляет конечно, особенно без акселератора... Те же новости сделаны обычным образом cck+views и такое время генерации жуткое... Можно конечно оптимизировать страницу новостей, забив на views и написав всю выборку одним селектом. А вот поиск вообще ни в какие ворота!

Хорошо хоть все посетители анонимы, тормоза в основном отражаются только на нервах админов/модеров)

Комментарии

Аватар пользователя kiev1 kiev1 7 октября 2007 в 2:45

а что eaccelerator не к апачу приставляется? ага - кажется тут написано - http://malik.elcat.kg/nginx-fastcgiphp-chroot.shtml
у вас получается что короткие ссылки будут только с друпалом работать, а так что-бы везде - nginx не умеет?

Аватар пользователя igdrasil@drupal.org igdrasil@drupal.org 7 октября 2007 в 10:51

2kiev1
умеет он, только синтаксис там другой
для меня проблема именно в этом, апачевские регэкспы я давно понять не могу, а уж переписать...

Аватар пользователя VLAD_X VLAD_X 7 октября 2007 в 20:18

Где вы и все прочие понахватались баек о сложности mod_rewrite в Apache и nginx'е?

Было в Apache (в httpd.conf, а не в .htaccess)

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/$ [NC]
RewriteCond %{REQUEST_URI} !^/index.php$ [NC]
RewriteRule ^(.*)$ %{DOCUMENT_ROOT}index.php?q=$1 [L,QSA]

Стало в nginx'е (внутри нужного server { ..... })

location / {
 if (!-e $request_filename) {
  rewrite ^(.*)$ /index.php?q=$1 last;
  break;
 }
}

+ надо патчить Drupal, если он работает на Apache-backend'е за nginx'ом; там есть бага с неправильным REQUEST_URI при включенных clean_urls

Аватар пользователя VLAD_X VLAD_X 7 октября 2007 в 21:15

Бага редко проявляется в том, что у форм action="index.php?q=/bla-bla-bla" вместо action="/bla-bla-bla" при включенных clean_urls.
Исследование показало, что в этом случае в action тупо подставляется REQUEST_URI АПАЧА, который знать не знает о всяких реврайтах, которые делает nginx перед ним.
Собственно, так и должно быть, ведь к Апачу и приходят ссылки вида index.php?q=/bla-bla-bla.
Лечится это обрезанием "*?q=" из SERVER['REQUEST_URI'] если включены clean_urls в ядерной функции request_uri()

Аватар пользователя VLAD_X VLAD_X 8 октября 2007 в 7:50

Кстати, форма где-то в админке попадалась. То ли там, где слоган-миссия, то ли там, где формат времени ставится