Jump to content

mysql оптимизация


Recommended Posts

Здравствуйте, перевел свой сайт на vsd, поставил nginx,apache2,memcached,mysql

 

страницы где не задействован mysql грузятся со скоростью 1с, а где он есть от 5 сек до 20 сек. На хостинге загрузка была 0-2 секунды. Причина перехода подключение ODBC драйвера.

 

Помогите пожалуйста в оптимизации my.cnf, сейчас стоит такой, пошалил немного.

 

[mysqld]
#
# * Basic Settings
#
user        = mysql
pid-file    = /var/run/mysqld/mysqld.pid
socket        = /var/run/mysqld/mysqld.sock
port        = 3306
basedir        = /usr
datadir        = /var/lib/mysql
tmpdir        = /tmp
language    = /usr/share/mysql/english
skip-external-locking
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address        = 127.0.0.1
#
# * Fine Tuning
#
key_buffer        = 128M
key_cache_division_limit=70
max_allowed_packet    = 32M
thread_stack        = 256K
thread_cache_size	   = 16
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover		 = BACKUP
max_connections	    = 500
table_cache		    = 512
thread_concurrency	 = 10
#
# * Query Cache Configuration
#
query_cache_limit    = 16M
query_cache_size	    = 64M
max_heap_table_size=32M
tmp_table_size=32M
#
# * Logging and Replication
#
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.
# As of 5.1 you can enable the log at runtime!
#general_log_file	    = /var/log/mysql/mysql.log
#general_log			 = 1
#
# Error logging goes to syslog due to /etc/mysql/conf.d/mysqld_safe_syslog.cnf.
#
# Here you can see queries with especially long duration
#log_slow_queries    = /var/log/mysql/mysql-slow.log
#long_query_time = 2
#log-queries-not-using-indexes
#
# The following can be used as easy to replay backup logs or for replication.
# note: if you are setting up a replication slave, see README.Debian about
#	   other settings you may need to change.
#server-id        = 1
#log_bin            = /var/log/mysql/mysql-bin.log
expire_logs_days    = 10
max_binlog_size		 = 100M
#binlog_do_db        = include_database_name
#binlog_ignore_db    = include_database_name
#
# * InnoDB
#
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
#
# * InnoDB plugin
# As of MySQL 5.1.38, the InnoDB plugin from Oracle is included in the MySQL source code.
# It has many improvements and better performances than the built-in InnoDB storage engine.
# Please read http://www.innodb.com/products/innodb_plugin/ for more information.
# Uncommenting the two following lines to use the InnoDB plugin.
#ignore_builtin_innodb
#plugin-load=innodb=ha_innodb_plugin.so
#
# * Multiple plugins
# If you want to load multiple plugins at the same time, you have to put them on a single
# plugin-load line. MySQL does not support several plugin-load directives and always keep the
# last read. Then if you want, for example, use the Pinba storage engine while having the
# the InnoDB plugin loaded, you should uncomment the following line
#plugin-load=innodb=ha_innodb_plugin.so;libpinba_engine.so
#
# * Security Features
#
# Read the manual, too, if you want chroot!
# chroot = /var/lib/mysql/
#
# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
#
# ssl-ca=/etc/mysql/cacert.pem
# ssl-cert=/etc/mysql/server-cert.pem
# ssl-key=/etc/mysql/server-key.pem



[mysqldump]
quick
quote-names
max_allowed_packet    = 16M

[mysql]
#no-auto-rehash    # faster start of mysql but no tab completition

[isamchk]
key_buffer        = 16M

#
# * IMPORTANT: Additional settings that can override those from this file!
#   The files must end with '.cnf', otherwise they'll be ignored.
#
!includedir /etc/mysql/conf.d/

[MySQL]
Description	 = MySQL driver for Linux & Win32
Driver		  = /usr/lib/odbc/libmyodbc.so
Setup		   = /usr/lib/odbc/libodbcmyS.so
FileUsage	   = 1

 

параметры сервера:

CPU: 512 МГц

RAM: 480 МБ

OS debian

 

посещаемость до перевода была 100-200 человек.

Link to comment
Share on other sites

А на каких страницах "не используется mysql", мне просто интересно?

 

При наличии вышеуказанного ПО и достаточных системных ресурсов ну никак страница не может отдаваться за 20 сек даже при дефолтном конфиге мускла.

Link to comment
Share on other sites

у тебя "тормозит" только бэкенд? Что в логах мускла/вебсервера вообще?

это я тебе к тому написал что ты бы поднял сперва обычный ЛАМП конфиг дефолтный и от него бы уже "шалил"

Link to comment
Share on other sites

lamp имел ввиду, не суть, настраивать вдс я не буду)

по теме: если ты уверен что дело в мускле - можно а) тестировать нешаленный конфиг б) заглянуть в логи в целом в) заглянуть в лог медленных запросов может там че полезное увидишь

Link to comment
Share on other sites

да можно все что угодно сделать, просто ты залепил сразу кучу ПО "под оптимизацию" и теперь наблюдаешь бока, чтобы найти причину боков надо как минимум разбираться во всем этом. Я бы на твоем месте оставил конфиг вида апач+мускл+мод_пхп и отладил его нормально и потом уже навешивал мемкеши и энжинксы

ну или если чувствуешь в себе силы подымай сразу nginx + php-fastcgi + mysql, правила реврайта для кажется 3-й версии престашопа были на сайте нжинкса, я когда-то ссылку приводил

Link to comment
Share on other sites

еще раз удостоверился что дело в мускуле, чем больше товаров на странице тем дольше грузится страница, если на странице не более 10 товаров, то грузит очень быстро, если больше то долго.

 

Существенно помог модуль ajaxscroll От Орса с подгрузкой товаров, сделал вывод по 3 товара на страницу, остальное подгружается при просмотре

Link to comment
Share on other sites

Угу...если на карточке товара есть блок с дополнительными товарами из этой категории и их там штук 20, и открыть 20 товаров в 20 вкладках то нагрузка на сервак идет огромная...

 

Я офигеваю от размера своей бд, уже 180мб...

 

Кстати я считаю что отключение внутренней статистики в админке благотворно влияет на производительность! Так же будьте с ней аккуратнее! У меня база без контроля за пол года 700мб стала весить! 500мб статистики...

Link to comment
Share on other sites

<p>у меня база всего 20мб весит использую с октября</p> точноне помнжю вроде иннодб. позжетмогутсказать ибо щас не у компа

Link to comment
Share on other sites

с таким конфигом стало таки грузиться нормально от 0.5 сек до 5 секв зависимости от количества присутствия мускула на странице

[client]
port        = 3306
socket        = /var/run/mysqld/mysqld.sock

[mysqld_safe]
socket        = /var/run/mysqld/mysqld.sock
nice        = 0


[mysqld]
#
# * Basic Settings
#
user        = mysql
pid-file    = /var/run/mysqld/mysqld.pid
socket        = /var/run/mysqld/mysqld.sock
port        = 3306
basedir        = /usr
datadir        = /var/lib/mysql
tmpdir        = /tmp
language    = /usr/share/mysql/english
skip-external-locking
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address        = 127.0.0.1
#
# * Fine Tuning
#

key_buffer        = 32M
max_allowed_packet    = 32M
thread_stack        = 128K
thread_cache_size    = 8
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover        = BACKUP
#max_connections	    = 100
#table_cache		    = 64
#thread_concurrency	 = 10
#
# * Query Cache Configuration
#
query_cache_limit	   = 2M
query_cache_size	    = 32M

########################
##key_buffer        = 128M
##key_cache_division_limit=70
##max_allowed_packet    = 32M
##thread_stack        = 256K
##thread_cache_size	   = 16
#########################
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover		 = BACKUP
max_connections	    = 500
table_cache		    = 512
thread_concurrency	 = 10
#
# * Query Cache Configuration
#
#########################
##query_cache_limit    = 16M
##query_cache_size	    = 64M
##max_heap_table_size=32M
##tmp_table_size=32M
#########################
#
# * Logging and Replication
#
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.
# As of 5.1 you can enable the log at runtime!
#general_log_file	    = /var/log/mysql/mysql.log
#general_log			 = 1
#
# Error logging goes to syslog due to /etc/mysql/conf.d/mysqld_safe_syslog.cnf.
#
# Here you can see queries with especially long duration
#log_slow_queries    = /var/log/mysql/mysql-slow.log
#long_query_time = 2
#log-queries-not-using-indexes
#
# The following can be used as easy to replay backup logs or for replication.
# note: if you are setting up a replication slave, see README.Debian about
#	   other settings you may need to change.
#server-id        = 1
#log_bin            = /var/log/mysql/mysql-bin.log
expire_logs_days    = 10
max_binlog_size		 = 100M
#binlog_do_db        = include_database_name
#binlog_ignore_db    = include_database_name
#
# * InnoDB
#
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
#
# * InnoDB plugin
# As of MySQL 5.1.38, the InnoDB plugin from Oracle is included in the MySQL source code.
# It has many improvements and better performances than the built-in InnoDB storage engine.
# Please read http://www.innodb.com/products/innodb_plugin/ for more information.
# Uncommenting the two following lines to use the InnoDB plugin.
#ignore_builtin_innodb
#plugin-load=innodb=ha_innodb_plugin.so
#
# * Multiple plugins
# If you want to load multiple plugins at the same time, you have to put them on a single
# plugin-load line. MySQL does not support several plugin-load directives and always keep the
# last read. Then if you want, for example, use the Pinba storage engine while having the
# the InnoDB plugin loaded, you should uncomment the following line
#plugin-load=innodb=ha_innodb_plugin.so;libpinba_engine.so
#
# * Security Features
#
# Read the manual, too, if you want chroot!
# chroot = /var/lib/mysql/
#
# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
#
# ssl-ca=/etc/mysql/cacert.pem
# ssl-cert=/etc/mysql/server-cert.pem
# ssl-key=/etc/mysql/server-key.pem



[mysqldump]
quick
quote-names
max_allowed_packet    = 16M

[mysql]
#no-auto-rehash    # faster start of mysql but no tab completition

[isamchk]
key_buffer        = 16M

#
# * IMPORTANT: Additional settings that can override those from this file!
#   The files must end with '.cnf', otherwise they'll be ignored.
#
!includedir /etc/mysql/conf.d/

[MySQL]
Description	 = MySQL driver for Linux & Win32
Driver		  = /usr/lib/odbc/libmyodbc.so
Setup		   = /usr/lib/odbc/libodbcmyS.so
FileUsage	   = 1

Link to comment
Share on other sites

Странно сайт все равно работает не как я хочу, хотя

 

free

total used free shared buffers cached

Mem: 491716 385712 106004 0 4872 65548

-/+ buffers/cache: 315292 176424

Link to comment
Share on other sites

сделал минификацию Орса, настроил gzip, установил xcache вроде чутьчуть быстрее работает

 

было:

total used free shared buffers cached

Mem: 491716 385712 106004 0 4872 65548

-/+ buffers/cache: 315292 176424

Стало:

total used free shared buffers cached

Mem: 491716 357892 133824 0 9932 134760

-/+ buffers/cache: 213200 278516

Swap: 0 0 0

Link to comment
Share on other sites

Если так любишь оптимизировать то почитай про Varnish..

чем хорош? вот нашел кое что http://highload.com....B0%D1%80%D1%82/ но про него не оч много в инете

 

я еще заметил если очень часто и длительно время переходить по страницам, в итоге они долго начинают грузиться в один момент

Link to comment
Share on other sites

gabdr, опубликуй скрин таба Настройка - Быстродействие своего магазина, что-то у меня нехорошее предчувствие

Кто то забыл выключить компиляцию)

 

Кстате не нужен хороший дизайнер и верстальщик? :)

 

вы что меня за такого неуча считаете? там все как нужно стоит. дело скорее в длительности сессии. или мемкеш перезапускает кеш

Link to comment
Share on other sites

У меня вот сейчас другая проблема, я не могу для сайтов на престашопе включить nginx, потому что другие сайты на сервере используют proxy_cache, а настроить работу престы я так и не смог работать через proxy_cache, теряются cockie, вернее они кешируются у первого посетителя и выдаются всем остальным...

Link to comment
Share on other sites

У меня вот сейчас другая проблема, я не могу для сайтов на престашопе включить nginx, потому что другие сайты на сервере используют proxy_cache, а настроить работу престы я так и не смог работать через proxy_cache, теряются cockie, вернее они кешируются у первого посетителя и выдаются всем остальным...

 

а у тебя хостинг или всд?

Link to comment
Share on other sites

командой top решил посмотреть загружаемость сервера и ужаснулся

 

24405 rustam 20 0 39132 19m 3768 R 82.2 4.2 0:02.52 apache2

24416 rustam 20 0 39920 20m 3808 R 39.9 4.4 0:03.90 apache2

24411 rustam 20 0 42108 22m 3828 R 35.9 4.8 0:05.62 apache2

 

 

да и еще загрузка ОЗУ увеличилась в 100мб с прошлым разом.

мускул и нгинкс почти ничего не жрет.

решил окончательно уходить на fсgi, у кого нибудь есть опыт его установки?

Link to comment
Share on other sites

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

 

У меня на днях были серьезные проблемы с престошопом, да еще совпало с акцией на групоне на этот магаз и возросший трафик только все усугубил. От чего все пришло в норму сказать не могу, так же из-за чего все началось, но мне помогло увеличение значений в nginx конфиге, плюс многократное увеличение значений в my.cnf конфиги мускуля, в частности кэша таблиц, перевод базы с InnoDB на MyISAM(да да вы читали и слышали что InnoDB лучше, но вам не доступны опции проверки, восстановления БД, а если там ошибки? То из-за этого тоже тормозить все может). Так же снизил некоторые параметры конфига апача, таймауты и т.д. Включил CacheFS, сжатие css, html, java. После уменьшил кол-во запросов к апачу и БДm путем снижения кол-во товаров на страницу, убрал блок товары той же категории...еще многие на главную страницу выводят товары и подули с новинками, хитами и т.д., по статистике главная страница сайта самая популярная и разгрузив главную страницу тоже можно убрать нагрузку на сервер. RSS убрал который тоже нафиг не нужен и пользуются ими не так уж и много людей и считаю что для интернет магазина это не нужно, в основном покупатели делают заказ один раз и больше не вернутся обратно, так какой смысл им от RSS..и еще смотря что за аудитория, спросите знакомыч что такое rss, вручили они вам ответят правильно.

Link to comment
Share on other sites

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

 

У меня на днях были серьезные проблемы с престошопом, да еще совпало с акцией на групоне на этот магаз и возросший трафик только все усугубил. От чего все пришло в норму сказать не могу, так же из-за чего все началось, но мне помогло увеличение значений в nginx конфиге, плюс многократное увеличение значений в my.cnf конфиги мускуля, в частности кэша таблиц, перевод базы с InnoDB на MyISAM(да да вы читали и слышали что InnoDB лучше, но вам не доступны опции проверки, восстановления БД, а если там ошибки? То из-за этого тоже тормозить все может). Так же снизил некоторые параметры конфига апача, таймауты и т.д. Включил CacheFS, сжатие css, html, java. После уменьшил кол-во запросов к апачу и БДm путем снижения кол-во товаров на страницу, убрал блок товары той же категории...еще многие на главную страницу выводят товары и подули с новинками, хитами и т.д., по статистике главная страница сайта самая популярная и разгрузив главную страницу тоже можно убрать нагрузку на сервер. RSS убрал который тоже нафиг не нужен и пользуются ими не так уж и много людей и считаю что для интернет магазина это не нужно, в основном покупатели делают заказ один раз и больше не вернутся обратно, так какой смысл им от RSS..и еще смотря что за аудитория, спросите знакомыч что такое rss, вручили они вам ответят правильно.

да нет я впринципе все настраивал старался. мускул тюнером сделал. в апач ваще не лез. нгинкс мне настроил админ хостинга. а остальное там несложно. в предыдущей теме увидел. что у вас нгинкс конфиги у всех без гзипа стоят
Link to comment
Share on other sites

Блин ну что значит настраивал, старался? Я понимаю там строил, старался или рисовал, старался...я просто по твоему сайту вижу как ты старался, что наверное перестарался скорее, в начале секунд 10 ожидания, а потом страничка неторопливо грузится...

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

 

Про gzip, у меня тогда был слабый сервер, а на слабых конфигах (vps в районе 250-650р в месяц на 1 сайт) его лучше отключать, там создается повышенная нагрузка на проц сервера. Сейчас он у меня включен.

 

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

Link to comment
Share on other sites

Моя любимая тема - оптимизация mysql nginx и прочего.

Сейчас приведу примеры обрывков своих конфигов, правда от Mysql-ного смысла вам не будет - он используется на сервере с 8 гигами оперативки, Intel I7 и зеркальным рейдом.

Но обо всём по порядку:

Nginx, проксирующий запросу на Apache:

 

server {
listen 80 ;
server_name site.ru www.site.ru;
proxy_buffer_size 32k;
proxy_buffers 32 32k;
client_header_buffer_size 32k;
large_client_header_buffers 32 32k;
proxy_cache_methods GET HEAD POST;
access_log /var/log/ispconfig/httpd/site.ru/access.log;
error_log   /var/log/nginx/error-site.log;
location ~* ^.+.(zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|swf|flv|htm|mp3)$ {
root /var/www/site.ru/web;
access_log off;
expires 30d;
}
location / {
root /var/www/site.ru/web;
index index.html index.htm index.php;
proxy_pass http://127.0.0.1:82;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
error_log   /var/log/nginx/error-site.log;
proxy_buffer_size 32k;
proxy_buffers 32 32k;
}
}

Nginx, обрабатывающий запросы через php-fpm, включая рерайты:

 

server {
listen 80 ;
server_name site.ru www.site.ru;
access_log /var/log/ispconfig/httpd/site.ru/access.log;
error_log /var/log/ispconfig/httpd/site.ru/error.log;
root /var/www/site.ru/web;
location / {
index index.html index.htm index.php;
rewrite ^/([a-z0-9]+)\-([a-z0-9]+)(\-[_a-zA-Z0-9-]*)/([_a-zA-Z0-9-]*)\.jpg$ /img/p/$1-$2$3.jpg last;
rewrite ^/([0-9]+)\-([0-9]+)/([_a-zA-Z0-9-]*)\.jpg$ /img/p/$1-$2.jpg last;
rewrite ^/c/([0-9]+)(\-[_a-zA-Z0-9-]*)/[_a-zA-Z0-9-]*\.jpg$ /img/c/$1$2.jpg last;
rewrite "^/lang-([a-z]{2})/([a-zA-Z0-9-]*)/([0-9]+)\-([a-zA-Z0-9-]*)\.html(.*)$ /product.php?id_product=$3&isolang;=$1$5" last;
rewrite "^/lang-([a-z]{2})/([0-9]+)\-([a-zA-Z0-9-]*)\.html(.*)$ /product.php?id_product=$2&isolang;=$1$4" last;
rewrite "^/lang-([a-z]{2})/([0-9]+)\-([a-zA-Z0-9-]*)(.*)$ /category.php?id_category=$2&isolang;=$1" last;
rewrite ^/([a-zA-Z0-9-]*)/([0-9]+)\-([a-zA-Z0-9-]*)\.html(.*)$ /product.php?id_product=$2$4 last;
rewrite ^/([0-9]+)\-([a-zA-Z0-9-]*)\.html(.*)$ /product.php?id_product=$1$3 last;
rewrite ^/([0-9]+)\-([a-zA-Z0-9-]*)(.*)$ /category.php?id_category=$1 last;
rewrite ^/content/([0-9]+)\-([a-zA-Z0-9-]*)(.*)$ /cms.php?id_cms=$1 last;
rewrite ^/([0-9]+)__([a-zA-Z0-9-]*)(.*)$ /supplier.php?id_supplier=$1$3 last;
rewrite ^/([0-9]+)_([a-zA-Z0-9-]*)(.*)$ /manufacturer.php?id_manufacturer=$1$3 last;
rewrite "^/lang-([a-z]{2})/(.*)$ /$2?isolang=$1" last;
rewrite ^/page-not-found$ /404.php last;
rewrite ^/address$ /address.php last;
rewrite ^/addresses$ /addresses.php last;
rewrite ^/authentication$ /authentication.php last;
rewrite ^/best-sales$ /best-sales.php last;
rewrite ^/cart$ /cart.php last;
rewrite ^/contacts$ /contact-form.php last;
rewrite ^/discount$ /discount.php last;
rewrite ^/guest-tracking$ /guest-tracking.php last;
rewrite ^/order-history$ /history.php last;
rewrite ^/identity$ /identity.php last;
rewrite ^/manufacturers$ /manufacturer.php last;
rewrite ^/my-account$ /my-account.php last;
rewrite ^/new-products$ /new-products.php last;
rewrite ^/order$ /order.php last;
rewrite ^/order-follow$ /order-follow.php last;
rewrite ^/quick-order$ /order-opc.php last;
rewrite ^/order-slip$ /order-slip.php last;
rewrite ^/password-recovery$ /password.php last;
rewrite ^/prices-drop$ /prices-drop.php last;
rewrite ^/search$ /search.php last;
rewrite ^/sitemap$ /sitemap.php last;
rewrite ^/stores$ /stores.php last;
rewrite ^/supplier$ /supplier.php last;
expires max;
}
location ~ \.php$ {
	#expires		off; ## Do not cache dynamic content
 fastcgi_connect_timeout 100000s;
 fastcgi_read_timeout 1000000s;
 fastcgi_send_timeout 1000000s;
 fastcgi_buffer_size 32k;
 fastcgi_buffers 16 32k;
 fastcgi_pass   unix:/tmp/php-fpm.sock;
 fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
 fastcgi_param  SCRIPT_NAME index.php;
 include		fastcgi_params; ## See /etc/nginx/fastcgi_params
 }
}

Кстати, можно отдельно для первого варианта конфига дописать правило, позволяющее отдавать все картинки nginx, через rewrite.

По оптимизации mysql - могу еще предложить https://launchpad.ne...l-tuning-primer, возможно он покажет что-то новое.

И покажите всё-таки конфиг апача и php.ini возможно.

Link to comment
Share on other sites

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

 

А есть конфиг nginx где php как модуль апача стоит? А то везде fcgi cтавят, хотя модуль безопаснее и по тестам довольно шустрый...

 

Вот например статейка http://dev.1c-bitrix.ru/community/blogs/howto/568.php

Link to comment
Share on other sites

А есть конфиг nginx где php как модуль апача стоит?

 

выше приведен конфиг нжинкса который работает вместе с апачем, отдает статику, пхп там постольку поскольку

Link to comment
Share on other sites

выше приведен конфиг нжинкса который работает вместе с апачем, отдает статику, пхп там постольку поскольку

 

там и с php-frm есть :)

Link to comment
Share on other sites

Моя любимая тема - оптимизация mysql nginx и прочего.

Сейчас приведу примеры обрывков своих конфигов, правда от Mysql-ного смысла вам не будет - он используется на сервере с 8 гигами оперативки, Intel I7 и зеркальным рейдом.

Но обо всём по порядку:

Nginx, проксирующий запросу на Apache:

 

server {
listen 80 ;
server_name site.ru www.site.ru;
proxy_buffer_size 32k;
proxy_buffers 32 32k;
client_header_buffer_size 32k;
large_client_header_buffers 32 32k;
proxy_cache_methods GET HEAD POST;
access_log /var/log/ispconfig/httpd/site.ru/access.log;
error_log   /var/log/nginx/error-site.log;
location ~* ^.+.(zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|swf|flv|htm|mp3)$ {
root /var/www/site.ru/web;
access_log off;
expires 30d;
}
location / {
root /var/www/site.ru/web;
index index.html index.htm index.php;
proxy_pass http://127.0.0.1:82;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
error_log   /var/log/nginx/error-site.log;
proxy_buffer_size 32k;
proxy_buffers 32 32k;
}
}

Nginx, обрабатывающий запросы через php-fpm, включая рерайты:

 

server {
listen 80 ;
server_name site.ru www.site.ru;
access_log /var/log/ispconfig/httpd/site.ru/access.log;
error_log /var/log/ispconfig/httpd/site.ru/error.log;
root /var/www/site.ru/web;
location / {
index index.html index.htm index.php;
rewrite ^/([a-z0-9]+)\-([a-z0-9]+)(\-[_a-zA-Z0-9-]*)/([_a-zA-Z0-9-]*)\.jpg$ /img/p/$1-$2$3.jpg last;
rewrite ^/([0-9]+)\-([0-9]+)/([_a-zA-Z0-9-]*)\.jpg$ /img/p/$1-$2.jpg last;
rewrite ^/c/([0-9]+)(\-[_a-zA-Z0-9-]*)/[_a-zA-Z0-9-]*\.jpg$ /img/c/$1$2.jpg last;
rewrite "^/lang-([a-z]{2})/([a-zA-Z0-9-]*)/([0-9]+)\-([a-zA-Z0-9-]*)\.html(.*)$ /product.php?id_product=$3&isolang;=$1$5" last;
rewrite "^/lang-([a-z]{2})/([0-9]+)\-([a-zA-Z0-9-]*)\.html(.*)$ /product.php?id_product=$2&isolang;=$1$4" last;
rewrite "^/lang-([a-z]{2})/([0-9]+)\-([a-zA-Z0-9-]*)(.*)$ /category.php?id_category=$2&isolang;=$1" last;
rewrite ^/([a-zA-Z0-9-]*)/([0-9]+)\-([a-zA-Z0-9-]*)\.html(.*)$ /product.php?id_product=$2$4 last;
rewrite ^/([0-9]+)\-([a-zA-Z0-9-]*)\.html(.*)$ /product.php?id_product=$1$3 last;
rewrite ^/([0-9]+)\-([a-zA-Z0-9-]*)(.*)$ /category.php?id_category=$1 last;
rewrite ^/content/([0-9]+)\-([a-zA-Z0-9-]*)(.*)$ /cms.php?id_cms=$1 last;
rewrite ^/([0-9]+)__([a-zA-Z0-9-]*)(.*)$ /supplier.php?id_supplier=$1$3 last;
rewrite ^/([0-9]+)_([a-zA-Z0-9-]*)(.*)$ /manufacturer.php?id_manufacturer=$1$3 last;
rewrite "^/lang-([a-z]{2})/(.*)$ /$2?isolang=$1" last;
rewrite ^/page-not-found$ /404.php last;
rewrite ^/address$ /address.php last;
rewrite ^/addresses$ /addresses.php last;
rewrite ^/authentication$ /authentication.php last;
rewrite ^/best-sales$ /best-sales.php last;
rewrite ^/cart$ /cart.php last;
rewrite ^/contacts$ /contact-form.php last;
rewrite ^/discount$ /discount.php last;
rewrite ^/guest-tracking$ /guest-tracking.php last;
rewrite ^/order-history$ /history.php last;
rewrite ^/identity$ /identity.php last;
rewrite ^/manufacturers$ /manufacturer.php last;
rewrite ^/my-account$ /my-account.php last;
rewrite ^/new-products$ /new-products.php last;
rewrite ^/order$ /order.php last;
rewrite ^/order-follow$ /order-follow.php last;
rewrite ^/quick-order$ /order-opc.php last;
rewrite ^/order-slip$ /order-slip.php last;
rewrite ^/password-recovery$ /password.php last;
rewrite ^/prices-drop$ /prices-drop.php last;
rewrite ^/search$ /search.php last;
rewrite ^/sitemap$ /sitemap.php last;
rewrite ^/stores$ /stores.php last;
rewrite ^/supplier$ /supplier.php last;
expires max;
}
location ~ \.php$ {
	#expires		off; ## Do not cache dynamic content
 fastcgi_connect_timeout 100000s;
 fastcgi_read_timeout 1000000s;
 fastcgi_send_timeout 1000000s;
 fastcgi_buffer_size 32k;
 fastcgi_buffers 16 32k;
 fastcgi_pass   unix:/tmp/php-fpm.sock;
 fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
 fastcgi_param  SCRIPT_NAME index.php;
 include		fastcgi_params; ## See /etc/nginx/fastcgi_params
 }
}

Кстати, можно отдельно для первого варианта конфига дописать правило, позволяющее отдавать все картинки nginx, через rewrite.

По оптимизации mysql - могу еще предложить https://launchpad.ne...l-tuning-primer, возможно он покажет что-то новое.

И покажите всё-таки конфиг апача и php.ini возможно.

 

А почему у тебя некоторые значения в rewrite находятся в двойных кавычках, а другие нет?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...