Перейти к контенту
  • 0

Серверное окружение или ускоряем трёшку!


proit

Вопрос

Уже поднималась тема по оптимизации 3ки на уровне форума. Но сейчас я хотел бы остановиться на устройстве серверной инфраструктуры для форума. Предполагаю, тема будет очень актуальна для владельцев ВДС/ВС.

 

Недавно сам обзавелся ВДСкой, как раз к выходу 3.0.2. Каково было мое разочарование, когда время генерации не поднималась выше 0.7с, а если еще и конкурентные запросы запустить, то и вовсе >15с, что как сами понимаете, недопустимо. Все это действо происходило на centOS 5.3 со стабильным пакетом Apache 2.2.3, PHP5.1.6, Mysql 5.0.45. Дополнительно был поставлен eaccelerator 0.9.5.2 без поддержки ф-ий работы с памятью. Сервер же имеет ресурсы 480 MHz, 256Mb, что по идее должно хватать для довольно небольшого форума (7000пользователей + 16000постов) + на ВДС только форум.

 

А теперь ближе к делу, т.к. сейчас у меня практически нулевая ВДС (в плане окружения) и я стремлюсь добиться достаточной производительности, как и все вы, предлагаю здесь писать свои рекомендации (идеи?) по оптимизации именно серверного окружения, а я в свою очередь, по мере возможности (опыта) буду пробовать и проводить замеры с помощью siege с выкладкой результатов.

 

Вот что я имею сейчас:

 

siege -c10 -t 10S

Transactions: 26 hits

Availability: 100.00 %

Elapsed time: 15.94 secs

Data transferred: 0.32 MB

Response time: 1.87 secs

Transaction rate: 1.63 trans/sec

Throughput: 0.02 MB/sec

Concurrency: 3.05

Successful transactions: 26

Failed transactions: 0

Longest transaction: 13.34

Shortest transaction: 0.51

 

siege -c 30 -t 10S

Transactions: 15 hits

Availability: 100.00 %

Elapsed time: 21.15 secs

Data transferred: 0.19 MB

Response time: 6.17 secs

Transaction rate: 0.71 trans/sec

Throughput: 0.01 MB/sec

Concurrency: 4.37

Successful transactions: 15

Failed transactions: 0

Longest transaction: 10.55

Shortest transaction: 0.00

Только обратите внимание на "Elapsed time", хоть я и указывал 10сек, реальное время иногда много больше назначенного...(почему не знаю, видимо, какие то запросы виснут).

 

P.S. Я был немного озадачен, когда увидел, что кэширование происходит в БД...неужто придется ставить мемкэш? Предпочтительно только APT || eaccelerator --with-eaccelerator-shared-memory хватит? Уж очень не хочется раскидываться памятью:D

 

P.S.S. На днях согласуюсь с поддержкой и обновлю PHP + мускуль и привяжу nginx для статики.

Ссылка на комментарий
Поделиться на других сайтах

  • Ответы 64
  • Создана
  • Последний ответ

Лучшие авторы в этом вопросе

Лучшие авторы в этом вопросе

Рекомендуемые сообщения

  • 0
Да. Не первый раз уже встречаю, когда виртуальный хостинг работает в разы быстрее, чем ВДС.
Ссылка на комментарий
Поделиться на других сайтах

  • 0
Да, но тут нужно не забывать, пока у меня "заводская" настройка (конфиги)... Суть темы на реальном примере проследить реакции форума) Изменено пользователем proit
Ссылка на комментарий
Поделиться на других сайтах

  • 0
Сервер же имеет ресурсы 480 MHz, 256Mb, что по идее должно хватать для довольно небольшого форума (7000пользователей + 16000постов) + на ВДС только форум.

Это ж где такой дохлый комп откопали? Как он еще ворочается бедный... Ему-ж наверное уже лет 10. Чего вы от него хотите, если у него системная шина 66М, жесткий IDE тоже дохлый наверняка. Я на простые маршрутизаторы (закрываю канал точка-точка) ставлю минимум 1.8 Гц пентиумы 4-е на FreeBSD. На одном апач и мускул стоит для игр - так один подъем из бэкапа дампером длится в три раза дольше, чем на настольном ПК под WinXP, но на процессоре 3,2 Гц.

Так что не ждите чудес, быстрее уже не будет.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Это ж где такой дохлый комп откопали?

Как я писал ранее это ВДС - виртуальный выделенный сервер. Но мы отвлекаемся от темы:D

 

P.S. Можно ли выбрать систему кэширования самостоятельно? Поискал, ничего не нашел. На данный момент используется кэширование в БД, что является проблемой. Что бы не уходить оффтоп, напишите, пожалуйста, в личку.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Сегодня поставил eaccelerator 0.9.5.3 с поддержкой функций по работе с памятью. Ожидал, что он встанет frontend'ом к БД, при этом запросы должны были сократиться. Однако, ничего подобного я не заметил( Кол-во запросов не сократилось (конечно, если есть разделение запросов к БД и к кэшу)

 

Вот что у меня получилось:

 

siege -c 10 -t 30S решил тестить 30 секунд

Transactions: 55 hits

Availability: 98.21 %

Elapsed time: 34.47 secs

Data transferred: 0.69 MB

Response time: 3.06 secs

Transaction rate: 1.60 trans/sec

Throughput: 0.02 MB/sec

Concurrency: 4.89

Successful transactions: 55

Failed transactions: 1

Longest transaction: 25.22

Shortest transaction: 0.47

 

siege -c 30 -t 30S

Transactions: 60 hits

Availability: 98.36 %

Elapsed time: 37.85 secs

Data transferred: 0.75 MB

Response time: 10.82 secs

Transaction rate: 1.59 trans/sec

Throughput: 0.02 MB/sec

Concurrency: 17.15

Successful transactions: 60

Failed transactions: 1

Longest transaction: 33.58

Shortest transaction: 0.95

В целом, пока все кисло...

 

Сегодня скорее всего обновлю PHP и покручу мускул.

 

UPD: Обновился. Сделал замеры с базовыми конфигами PHP5.2.10 + mysql 5.1.38. Без eaccelerator'а.

Сократилась память используемая httpd с 60м до ~39м

 

siege -c 10 -t 30S

Transactions: 38 hits

Availability: 100.00 %

Elapsed time: 36.70 secs

Data transferred: 0.48 MB

Response time: 6.40 secs

Transaction rate: 1.04 trans/sec

Throughput: 0.01 MB/sec

Concurrency: 6.62

Successful transactions: 38

Failed transactions: 0

Longest transaction: 31.36

Shortest transaction: 0.70

 

siege -c 30 -t 30S

Transactions: 36 hits

Availability: 97.30 %

Elapsed time: 37.12 secs

Data transferred: 0.45 MB

Response time: 14.27 secs

Transaction rate: 0.97 trans/sec

Throughput: 0.01 MB/sec

Concurrency: 13.84

Successful transactions: 36

Failed transactions: 1

Longest transaction: 32.03

Shortest transaction: 0.78

 

Отсутствие опт-кэшера дает о себе знать...

 

P.S. Вам тема хоть немного интересна? Пока не вижу никакой инициативы с вашей стороны:D

Изменено пользователем proit
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Хорошо, попробую и xCache:)

Хотя ранее я не наблюдал за xcache такой прыткости, как за eaccelerator'ом.

 

Можно тогда увидеть линки с рекомендациями? Я ничего обособленного не нашел, лишь некоторые поверхностные рекомендации.

 

Поставил eaccelerator 0.9.5.3

 

siege -c 10 -t 30S

Transactions: 75 hits

Availability: 98.68 %

Elapsed time: 39.04 secs

Data transferred: 0.94 MB

Response time: 2.31 secs

Transaction rate: 1.92 trans/sec

Throughput: 0.02 MB/sec

Concurrency: 4.44

Successful transactions: 75

Failed transactions: 1

Longest transaction: 13.71

Shortest transaction: 0.36

 

siege -c 30 -t 30S

Transactions: 78 hits

Availability: 96.30 %

Elapsed time: 39.32 secs

Data transferred: 0.98 MB

Response time: 9.26 secs

Transaction rate: 1.98 trans/sec

Throughput: 0.03 MB/sec

Concurrency: 18.37

Successful transactions: 78

Failed transactions: 3

Longest transaction: 29.02

Shortest transaction: 0.30

 

Прирост в производительности ощутим:D Хотя все равно иногда проскакивают таймауты(

 

Следующим этапом будет установка nginx'а для статики.

Изменено пользователем proit
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Работает! Удалось настроить nginx для отдачи статики и могу сказать неплохо таки отдает))) Во всяком случае, субъективно форум стал грузиться быстрее)

Ну, а сами цифры следующие:

 

siege -c 10 -t 30S

Transactions: 84 hits

Availability: 100.00 %

Elapsed time: 41.93 secs

Data transferred: 1.06 MB

Response time: 3.37 secs

Transaction rate: 2.00 trans/sec

Throughput: 0.03 MB/sec

Concurrency: 6.76

Successful transactions: 84

Failed transactions: 0

Longest transaction: 24.28

Shortest transaction: 0.28

 

siege -c 30 -t 30S

Transactions: 104 hits

Availability: 94.55 %

Elapsed time: 61.08 secs

Data transferred: 1.31 MB

Response time: 10.89 secs

Transaction rate: 1.70 trans/sec

Throughput: 0.02 MB/sec

Concurrency: 18.53

Successful transactions: 104

Failed transactions: 6

Longest transaction: 50.67

Shortest transaction: 0.00

 

"Longest transaction: 50.67" вообще никуда не годится.

Далее будет работа над оптимизацией мускуля.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

VDS-ка аналогичная вашей, nginx vs apache2 vs php5.2.9 vs XCache:

 

siege -c 10 -t 30S

Transactions:				  95 hits
Availability:			  100.00 %
Elapsed time:			   29.44 secs
Data transferred:			1.13 MB
Response time:				2.09 secs
Transaction rate:			3.23 trans/sec
Throughput:				0.04 MB/sec
Concurrency:				6.73
Successful transactions:		  95
Failed transactions:			   0
Longest transaction:		   10.59
Shortest transaction:			0.37

 

siege -c 30 -t 30S

Transactions:				  71 hits
Availability:			  100.00 %
Elapsed time:			   29.60 secs
Data transferred:			0.84 MB
Response time:				8.05 secs
Transaction rate:			2.40 trans/sec
Throughput:				0.03 MB/sec
Concurrency:			   19.30
Successful transactions:		  71
Failed transactions:			   0
Longest transaction:		   17.02
Shortest transaction:			2.84

 

Заинтересовала "оптимизация мускуля". Таким еще не занимался, что у вас там интересного в загашнике?

 

proit, а вообще, вам не кажется, что ipboard 3 - это полная жопа в плане производительности?)))

 

UPD. Новые данные, забыл выключить торрент-клиент при первом замере))) Кстати, а какова техника замеров? Например, у меня интернет так себе, хреноват, так что результаты могут быть испорчены в нижнюю сторону.

Изменено пользователем Ritsuka
Ссылка на комментарий
Поделиться на других сайтах

  • 0
proit, а вообще, вам не кажется, что ipboard 3 - это полная жопа в плане производительности?)))

К сожалению, вынужден согласиться...

 

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

Замеры ведутся непосредственно на сервере через SSH с помощью siege. Делаю несколько замеров (до 7) главной страницы, выбираю средний с учетом затребованного времени (сами видели, как скачет). Поэтому скорость моего инета тут вообще никакой роли не играет:D

А вы разве делаете не так?

 

Заинтересовала "оптимизация мускуля". Таким еще не занимался, что у вас там интересного в загашнике?

По поводу мускуля - хочу проиграться с конфигом my.conf. По идее можно подобрать более менее удобоваримую конфигурацию... О результатах сообщу только завтра;)

 

P.S. Забыл сделать примечание, что я еще совсем нуб в администрировании (мой первый ВДС), правда упорно развиваюсь. Поэтому вероятно, что я что то упускаю из виду, но это может не благоприятно повлиять на производительность. Прошу учитывать:)

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Результаты замера при запуске siege с сервера:

 

siege -c 10 -t 30S

Transactions:				 184 hits
Availability:			  100.00 %
Elapsed time:			   53.09 secs
Data transferred:			2.18 MB
Response time:				1.58 secs
Transaction rate:			3.47 trans/sec
Throughput:				0.04 MB/sec
Concurrency:				5.48
Successful transactions:		 184
Failed transactions:			   0
Longest transaction:		   10.66
Shortest transaction:			0.20

 

siege -c 30 -t 30S

Transactions:				 151 hits
Availability:			  100.00 %
Elapsed time:			   55.28 secs
Data transferred:			1.79 MB
Response time:				8.54 secs
Transaction rate:			2.73 trans/sec
Throughput:				0.03 MB/sec
Concurrency:			   23.32
Successful transactions:		 151
Failed transactions:			   0
Longest transaction:		   16.09
Shortest transaction:			2.58

 

Повторюсь, apache2 + php 5.2.9 + XCache.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Не мудрствуя лукаво, поставил my-medium.cnf из поставки mysql. Если честно, то особой разницы я не почувствовал:D Но, по правде сказать, мускулю я сегодня не уделял особого внимания...

Сегодня занимался замерами разных опт-кэшеров APC, xCache 1.2.2 (пробовал и 2.0-dev), eaccelerator 0.9.5.3 в контексте форума. Всем кэшерам я предоставлял по 32М.

 

XCACHE

 

siege -c 10 -t 30S

Transactions: 76 hits

Availability: 100.00 %

Elapsed time: 39.36 secs

Data transferred: 0.96 MB

Response time: 3.32 secs

Transaction rate: 1.93 trans/sec

Throughput: 0.02 MB/sec

Concurrency: 6.41

Successful transactions: 76

Failed transactions: 0

Longest transaction: 23.36

Shortest transaction: 0.48

 

load average: 9.68, 7.92, 6.11

Tasks: 100 total, 18 running, 81 sleeping, 0 stopped, 1 zombie

Cpu(s): 18.1%us, 2.6%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 79.3%st

Mem: 262320k total, 237472k used, 24848k free, 10648k buffers

Swap: 262136k total, 32k used, 262104k free, 80912k cached

 

Total Memory Used: 3,07МБ (Peak:3,5МБ)

 

Eaccelerator

 

siege -c 10 -t 30S

Transactions: 71 hits

Availability: 98.61 %

Elapsed time: 36.08 secs

Data transferred: 0.90 MB

Response time: 2.92 secs

Transaction rate: 1.97 trans/sec

Throughput: 0.02 MB/sec

Concurrency: 5.75

Successful transactions: 71

Failed transactions: 1

Longest transaction: 21.85

Shortest transaction: 0.43

 

load average: 12.36, 6.37, 5.34

Tasks: 98 total, 10 running, 87 sleeping, 1 stopped, 0 zombie

Cpu(s): 15.9%us, 2.4%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 81.7%st

Mem: 262320k total, 234404k used, 27916k free, 7580k buffers

Swap: 262136k total, 32k used, 262104k free, 87340k cached

 

Total Memory Used: 3,04МБ (Peak:3,47МБ)

 

APT

 

siege -c 10 -t 30S

Transactions: 64 hits

Availability: 98.46 %

Elapsed time: 33.22 secs

Data transferred: 1.04 MB

Response time: 3.35 secs

Transaction rate: 1.93 trans/sec

Throughput: 0.03 MB/sec

Concurrency: 6.46

Successful transactions: 64

Failed transactions: 1

Longest transaction: 23.36

Shortest transaction: 0.42

 

load average: 11.32, 7.94, 5.19

Tasks: 98 total, 9 running, 89 sleeping, 0 stopped, 0 zombie

Cpu(s): 17.7%us, 1.6%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 80.6%st

Mem: 262320k total, 230380k used, 31940k free, 9504k buffers

Swap: 262136k total, 32k used, 262104k free, 79364k cached

 

Total Memory Used: 3,74МБ (Peak:4,17МБ)

 

Решил еще снимать данные с TOP под конец работы siege. Конечно, это все примерно, как и все замеры. Единственное, что точно - это потребление памяти. Кто хочет узнать расход памяти у себя, то в initdata.php найдите

define( 'IPS_MEMORY_DEBUG_MODE', 0 );

и поставьте 1. После, получите целую трассировку использования памяти)

 

 

P.S. Практически все неиспользуемые расширения PHP были отключены, так же закомментированы некоторые (в каких был уверен) модули апача... Последняя настройка prefork MPM в httpd.conf была:

 

StartServers 3

MinSpareServers 2

MaxSpareServers 7

ServerLimit 24

MaxClients 24

MaxRequestsPerChild 300

В целом, на сегодняшний день особо сдвига в плане производительности получить не удалось( От этого и грустно...но благодаря уважаемому, Ritsuka, желание двигаться вперед не иссякает)

Сейчас ваши "Transaction rate: 3.47 trans/sec" для меня являются эталонными. Правда, пока я не представляю, как этого добиться. А поддерживаются ли форумом постоянные соединения к БД?

 

P.S2. Ritsuka, хотелось бы уточнить вашу ОСь, версию xCache, Mysql, а так же настройку prefork MPM в httpd.conf.

 

P.S3. До сих пор для меня остается непонятным механизм кэширования....как кэшировалось все в БД, так и кэшируется;)(( Постоянно идет куча запросов к БД для получения кэша... Может быть, кто сможет разъяснить эту ситуацию?

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Не думаю, что вы найдете в моей конфигурации что-то выдающееся:

# uname -rs
FreeBSD 7.1-RELEASE

# mysql -V
mysql  Ver 14.12 Distrib 5.0.77, for portbld-freebsd7.1 (i386) using  5.2

# httpd -v
Server version: Apache/2.2.11 (FreeBSD)
Server built:   Jul 30 2009 15:51:38

# cat /usr/local/etc/apache22/httpd.conf | grep "mpm"
<IfModule !mpm_netware_module>
<IfModule !mpm_winnt_module>
#Include etc/apache22/extra/httpd-mpm.conf

# php -v
PHP 5.2.9 (cli) (built: Jul 30 2009 16:28:52) 
Copyright © 1997-2009 The PHP Group
Zend Engine v2.2.0, Copyright © 1998-2009 Zend Technologies
   with XCache v1.2.2, Copyright © 2005-2007, by mOo

# cat /usr/local/etc/php/xcache.ini | grep "size"
; to disable: xcache.size=0
; to enable : xcache.size=64M etc (any size > 0) and your system mmap allows
xcache.size  =               64M
xcache.var_size  =            64M

# top | grep "httpd"
77717 www         1   4    0   153M 46024K accept   0:04  0.39% httpd
71537 www         1   4    0   154M 45308K accept   0:04  0.29% httpd
77750 www         1   4    0   154M 43632K accept   0:04  0.29% httpd
77751 www         1   4    0   153M 43568K accept   0:03  0.29% httpd
78060 www         1   4    0   153M 41432K accept   0:03  0.10% httpd
77749 www         1   4    0   153M 42740K accept   0:04  0.00% httpd
77761 www         1   4    0   153M 42592K accept   0:04  0.00% httpd
77730 www         1   4    0   153M 44104K accept   0:04  0.00% httpd
77740 www         1   4    0   153M 42972K accept   0:03  0.00% httpd
77743 www         1   4    0   154M 45340K accept   0:03  0.00% httpd
89596 root        1  44    0   149M  9852K select   0:01  0.00% httpd

# top | grep "nginx"
70329 www         1   4    0 30728K  4324K kqread   1:10  0.00% nginx
70328 www         1   4    0 30728K  4524K kqread   1:04  0.00% nginx
70327 www         1   4    0 31752K  4776K kqread   1:02  0.00% nginx

# cat /usr/local/etc/nginx/nginx.conf
user www;
worker_processes  3;
events {
   worker_connections  10000;
}
http {
   include       mime.types;
   default_type  application/octet-stream;
   sendfile        on;
   proxy_max_temp_file_size 0;         
   server {
       listen  ***:80;
       server_name www.***.ru ***.ru "";
       access_log off;
location / {
	proxy_pass [url="http://127.0.0.1:80/;"]http://127.0.0.1:80/;[/url]
	proxy_set_header        Host            $http_host;
	proxy_set_header        X-Real-IP       $remote_addr;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
               client_max_body_size       10m;
        client_body_buffer_size    128k;
   	        client_body_temp_path      /var/nginx/client_body_temp;
   		proxy_connect_timeout      90;
       	proxy_send_timeout         90;
       	proxy_read_timeout         90;
   	        proxy_send_lowat           12000;
   		proxy_buffer_size          32k;
   		proxy_buffers              4 32k;
        proxy_busy_buffers_size    64k;
               proxy_temp_file_write_size 64k;
       	proxy_temp_path            /var/nginx/proxy_temp_main;
       }
       location ~*^.+\.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|wav|b
mp|rtf|js)$
{
           root   /home/www/public;
       }
   }

   # несколько блоков конфигурации выкинуто, т.к. там приватная информация о бэкенд серверах, на которые
   # осуществляет проксирование с лимитированием для некоторых доменов данный серв
}
# cat /etc/my.cnf
[client]
default-character-set=utf8
port		= 3306
socket		= /tmp/mysql.sock

[mysqld]
port		= 3306
socket		= /tmp/mysql.sock
skip-locking
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
default-character-set=utf8
character-set-server=utf8
collation-server=utf8_unicode_ci
server-id	= 1

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

# mysql -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 683516
Server version: 5.0.77 FreeBSD port: mysql-server-5.0.77_1

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> SHOW VARIABLES;
+---------------------------------+------------------------------------------------------------+
| Variable_name                   | Value                                                      |
+---------------------------------+------------------------------------------------------------+
| auto_increment_increment        | 1                                                          | 
| auto_increment_offset           | 1                                                          | 
| automatic_sp_privileges         | ON                                                         | 
| back_log                        | 50                                                         | 
| basedir                         | /usr/local/                                                | 
| bdb_cache_size                  | 8384512                                                    | 
| bdb_home                        | /home/mysql/                                               | 
| bdb_log_buffer_size             | 262144                                                     | 
| bdb_logdir                      |                                                            | 
| bdb_max_lock                    | 10000                                                      | 
| bdb_shared_data                 | OFF                                                        | 
| bdb_tmpdir                      | /var/tmp/                                                  | 
| binlog_cache_size               | 32768                                                      | 
| bulk_insert_buffer_size         | 8388608                                                    | 
| character_set_client            | utf8                                                       | 
| character_set_connection        | utf8                                                       | 
| character_set_database          | utf8                                                       | 
| character_set_filesystem        | binary                                                     | 
| character_set_results           | utf8                                                       | 
| character_set_server            | utf8                                                       | 
| character_set_system            | utf8                                                       | 
| character_sets_dir              | /usr/local/share/mysql/charsets/                           | 
| collation_connection            | utf8_general_ci                                            | 
| collation_database              | utf8_unicode_ci                                            | 
| collation_server                | utf8_unicode_ci                                            | 
| completion_type                 | 0                                                          | 
| concurrent_insert               | 1                                                          | 
| connect_timeout                 | 10                                                         | 
| datadir                         | /home/mysql/                                               | 
| date_format                     | %Y-%m-%d                                                   | 
| datetime_format                 | %Y-%m-%d %H:%i:%s                                          | 
| default_week_format             | 0                                                          | 
| delay_key_write                 | ON                                                         | 
| delayed_insert_limit            | 100                                                        | 
| delayed_insert_timeout          | 300                                                        | 
| delayed_queue_size              | 1000                                                       | 
| div_precision_increment         | 4                                                          | 
| keep_files_on_create            | OFF                                                        | 
| engine_condition_pushdown       | OFF                                                        | 
| expire_logs_days                | 0                                                          | 
| flush                           | OFF                                                        | 
| flush_time                      | 0                                                          | 
| ft_boolean_syntax               | + -><()~*:""&|                                             | 
| ft_max_word_len                 | 84                                                         | 
| ft_min_word_len                 | 4                                                          | 
| ft_query_expansion_limit        | 20                                                         | 
| ft_stopword_file                | (built-in)                                                 | 
| group_concat_max_len            | 1024                                                       | 
| have_archive                    | NO                                                         | 
| have_bdb                        | YES                                                        | 
| have_blackhole_engine           | NO                                                         | 
| have_compress                   | YES                                                        | 
| have_crypt                      | YES                                                        | 
| have_csv                        | NO                                                         | 
| have_dynamic_loading            | NO                                                         | 
| have_example_engine             | NO                                                         | 
| have_federated_engine           | NO                                                         | 
| have_geometry                   | YES                                                        | 
| have_innodb                     | YES                                                        | 
| have_isam                       | NO                                                         | 
| have_merge_engine               | YES                                                        | 
| have_ndbcluster                 | NO                                                         | 
| have_openssl                    | NO                                                         | 
| have_ssl                        | NO                                                         | 
| have_query_cache                | YES                                                        | 
| have_raid                       | NO                                                         | 
| have_rtree_keys                 | YES                                                        | 
| have_symlink                    | YES                                                        | 
| init_connect                    | SET NAMES utf8                                             | 
| init_file                       |                                                            | 
| init_slave                      |                                                            | 
| innodb_additional_mem_pool_size | 1048576                                                    | 
| innodb_autoextend_increment     | 8                                                          | 
| innodb_buffer_pool_awe_mem_mb   | 0                                                          | 
| innodb_buffer_pool_size         | 8388608                                                    | 
| innodb_checksums                | ON                                                         | 
| innodb_commit_concurrency       | 0                                                          | 
| innodb_concurrency_tickets      | 500                                                        | 
| innodb_data_file_path           | ibdata1:10M:autoextend                                     | 
| innodb_data_home_dir            |                                                            | 
| innodb_adaptive_hash_index      | ON                                                         | 
| innodb_doublewrite              | ON                                                         | 
| innodb_fast_shutdown            | 1                                                          | 
| innodb_file_io_threads          | 4                                                          | 
| innodb_file_per_table           | OFF                                                        | 
| innodb_flush_log_at_trx_commit  | 1                                                          | 
| innodb_flush_method             |                                                            | 
| innodb_force_recovery           | 0                                                          | 
| innodb_lock_wait_timeout        | 50                                                         | 
| innodb_locks_unsafe_for_binlog  | OFF                                                        | 
| innodb_log_arch_dir             |                                                            | 
| innodb_log_archive              | OFF                                                        | 
| innodb_log_buffer_size          | 1048576                                                    | 
| innodb_log_file_size            | 5242880                                                    | 
| innodb_log_files_in_group       | 2                                                          | 
| innodb_log_group_home_dir       | ./                                                         | 
| innodb_max_dirty_pages_pct      | 90                                                         | 
| innodb_max_purge_lag            | 0                                                          | 
| innodb_mirrored_log_groups      | 1                                                          | 
| innodb_open_files               | 300                                                        | 
| innodb_rollback_on_timeout      | OFF                                                        | 
| innodb_support_xa               | ON                                                         | 
| innodb_sync_spin_loops          | 20                                                         | 
| innodb_table_locks              | ON                                                         | 
| innodb_thread_concurrency       | 8                                                          | 
| innodb_thread_sleep_delay       | 10000                                                      | 
| interactive_timeout             | 28800                                                      | 
| join_buffer_size                | 131072                                                     | 
| key_buffer_size                 | 16777216                                                   | 
| key_cache_age_threshold         | 300                                                        | 
| key_cache_block_size            | 1024                                                       | 
| key_cache_division_limit        | 100                                                        | 
| language                        | /usr/local/share/mysql/english/                            | 
| large_files_support             | ON                                                         | 
| large_page_size                 | 0                                                          | 
| large_pages                     | OFF                                                        | 
| lc_time_names                   | en_US                                                      | 
| license                         | GPL                                                        | 
| local_infile                    | ON                                                         | 
| locked_in_memory                | OFF                                                        | 
| log                             | OFF                                                        | 
| log_bin                         | OFF                                                        | 
| log_bin_trust_function_creators | OFF                                                        | 
| log_error                       |                                                            | 
| log_queries_not_using_indexes   | OFF                                                        | 
| log_slave_updates               | OFF                                                        | 
| log_slow_queries                | OFF                                                        | 
| log_warnings                    | 1                                                          | 
| long_query_time                 | 10                                                         | 
| low_priority_updates            | OFF                                                        | 
| lower_case_file_system          | OFF                                                        | 
| lower_case_table_names          | 0                                                          | 
| max_allowed_packet              | 1048576                                                    | 
| max_binlog_cache_size           | 4294963200                                                 | 
| max_binlog_size                 | 1073741824                                                 | 
| max_connect_errors              | 10                                                         | 
| max_connections                 | 500                                                        | 
| max_delayed_threads             | 20                                                         | 
| max_error_count                 | 64                                                         | 
| max_heap_table_size             | 16777216                                                   | 
| max_insert_delayed_threads      | 20                                                         | 
| max_join_size                   | 4294967295                                                 | 
| max_length_for_sort_data        | 1024                                                       | 
| max_prepared_stmt_count         | 16382                                                      | 
| max_relay_log_size              | 0                                                          | 
| max_seeks_for_key               | 4294967295                                                 | 
| max_sort_length                 | 1024                                                       | 
| max_sp_recursion_depth          | 0                                                          | 
| max_tmp_tables                  | 32                                                         | 
| max_user_connections            | 0                                                          | 
| max_write_lock_count            | 4294967295                                                 | 
| multi_range_count               | 256                                                        | 
| myisam_data_pointer_size        | 6                                                          | 
| myisam_max_sort_file_size       | 2146435072                                                 | 
| myisam_recover_options          | OFF                                                        | 
| myisam_repair_threads           | 1                                                          | 
| myisam_sort_buffer_size         | 8388608                                                    | 
| myisam_stats_method             | nulls_unequal                                              | 
| net_buffer_length               | 8192                                                       | 
| net_read_timeout                | 30                                                         | 
| net_retry_count                 | 1000000                                                    | 
| net_write_timeout               | 60                                                         | 
| new                             | OFF                                                        | 
| old_passwords                   | OFF                                                        | 
| open_files_limit                | 8128                                                       | 
| optimizer_prune_level           | 1                                                          | 
| optimizer_search_depth          | 62                                                         | 
| pid_file                        | /home/mysql/mysql.pid                         | 
| plugin_dir                      |                                                            | 
| port                            | 3306                                                       | 
| preload_buffer_size             | 32768                                                      | 
| profiling                       | OFF                                                        | 
| profiling_history_size          | 15                                                         | 
| protocol_version                | 10                                                         | 
| query_alloc_block_size          | 8192                                                       | 
| query_cache_limit               | 1048576                                                    | 
| query_cache_min_res_unit        | 4096                                                       | 
| query_cache_size                | 0                                                          | 
| query_cache_type                | ON                                                         | 
| query_cache_wlock_invalidate    | OFF                                                        | 
| query_prealloc_size             | 8192                                                       | 
| range_alloc_block_size          | 4096                                                       | 
| read_buffer_size                | 262144                                                     | 
| read_only                       | OFF                                                        | 
| read_rnd_buffer_size            | 524288                                                     | 
| relay_log                       |                                                            | 
| relay_log_index                 |                                                            | 
| relay_log_info_file             | relay-log.info                                             | 
| relay_log_purge                 | ON                                                         | 
| relay_log_space_limit           | 0                                                          | 
| rpl_recovery_rank               | 0                                                          | 
| secure_auth                     | OFF                                                        | 
| secure_file_priv                |                                                            | 
| server_id                       | 1                                                          | 
| skip_external_locking           | ON                                                         | 
| skip_networking                 | OFF                                                        | 
| skip_show_database              | OFF                                                        | 
| slave_compressed_protocol       | OFF                                                        | 
| slave_load_tmpdir               | /var/tmp/                                                  | 
| slave_net_timeout               | 3600                                                       | 
| slave_skip_errors               | OFF                                                        | 
| slave_transaction_retries       | 10                                                         | 
| slow_launch_time                | 2                                                          | 
| socket                          | /tmp/mysql.sock                                            | 
| sort_buffer_size                | 524288                                                     | 
| sql_big_selects                 | ON                                                         | 
| sql_mode                        |                                                            | 
| sql_notes                       | ON                                                         | 
| sql_warnings                    | OFF                                                        | 
| ssl_ca                          |                                                            | 
| ssl_capath                      |                                                            | 
| ssl_cert                        |                                                            | 
| ssl_cipher                      |                                                            | 
| ssl_key                         |                                                            | 
| storage_engine                  | MyISAM                                                     | 
| sync_binlog                     | 0                                                          | 
| sync_frm                        | ON                                                         | 
| system_time_zone                | MSD                                                        | 
| table_cache                     | 64                                                         | 
| table_lock_wait_timeout         | 50                                                         | 
| table_type                      | MyISAM                                                     | 
| thread_cache_size               | 0                                                          | 
| thread_stack                    | 196608                                                     | 
| time_format                     | %H:%i:%s                                                   | 
| time_zone                       | SYSTEM                                                     | 
| timed_mutexes                   | OFF                                                        | 
| tmp_table_size                  | 33554432                                                   | 
| tmpdir                          | /var/tmp/                                                  | 
| transaction_alloc_block_size    | 8192                                                       | 
| transaction_prealloc_size       | 4096                                                       | 
| tx_isolation                    | REPEATABLE-READ                                            | 
| updatable_views_with_limit      | YES                                                        | 
| version                         | 5.0.77                                                     | 
| version_bdb                     | Sleepycat Software: Berkeley DB 4.1.24: (January 29, 2009) | 
| version_comment                 | FreeBSD port: mysql-server-5.0.77_1                        | 
| version_compile_machine         | i386                                                       | 
| version_compile_os              | portbld-freebsd7.1                                         | 
| wait_timeout                    | 28800                                                      | 
+---------------------------------+------------------------------------------------------------+

 

Обычный серв, особо не заморачивался тонкой настройкой параметров.

 

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

$INFO['use_xcache' ] = '1';

в файле conf_global.php.

 

 

 

Не забудьте выставить xcache.var_size отличное от нуля! Иначе ip.board начнет чихать и кашлять вам во весь экран варнингами :D

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Ritsuka, спасибо, за обильную информацию:D

 

Жаль, что используются кэшеры только для системных кэшей (systemvars, login_methods, vnums, app_cache), а не для сообщений и подписей (как использовалась БД в качестве кэша, так и используется)

Следовательно, мы экономим только 1 запрос! Было 10, стало 9:( Значительный улучшений не заметил;) Но transaction rate стабильно стал держаться на уровне 2.0-2.1 trans/sec

Что то, мне подсказывает, что возможность хранения сообщений в кэшерах тоже есть...

Значит, существуют следующие опции определяющие вашего кэшера:

 

$INFO['use_eaccelerator']=1;
$INFO['use_memcache']=1;
$INFO['use_xcache']=1;
$INFO['use_apc']=1;
$INFO['use_diskcache']=1;

 

Скажите пожалуйста, Ritsuka, а у вас сколько запросов идет к БД? И еще очень интересен показатель "Total Memory Used".

 

UPD: немного покопался в коде... Существует класс IPSContentCache (/admin/sources/base/core.php), который как раз и отвечает за кэширование записей и подписей...но в нём я так и не нашел никаких переключателей вроде use_кэшер (хотя он огромный, может быть, что то упустил)...

 

И вкусно и грустно...

Изменено пользователем proit
Ссылка на комментарий
Поделиться на других сайтах

  • 0

На стандартной главной странице (список форумов) - 9 запросов, время генерации - 0,1510 сек. Включены 4 хука - "Последние изменения статуса", "Активные авторы сегодня", "Latest Reputation", "Подписки". Сообщений на форуме - 41 470, пользователей - 1 896, 44 форума в 5 категориях, народу онлайн крайне мало (5-6 человек онлайн), ибо форум стадии застойного умирания - никто им не занимается, а я с тематикой форума не особо дружу (только тех сторону решаю).

 

proit, по поводу IPSContentCache - смотрите мою подпись :D

Ссылка на комментарий
Поделиться на других сайтах

  • 0

В общем на данный момент получилось сократиться число запросов до 5(- 4). Число транзакций/секунда держится около ~2.1

 

Уменьшение запросов достигается за счет определения кодировки на уровне сервера (Ritsuka, к вашему конфигу, возможно, придется добавить команду "skip-character-set-client-handshake" в секцию [mysqld])

В конфиге убрать определение sql_charset:

$INFO['sql_charset']			=	'';

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

 

P.S. Пока мне не получается разогнать форум...может быть, кто-нибудь подкинет идею куда копать... взять ВДС помощнее не предлагать:D

Изменено пользователем proit
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Используйте Sphinx (снижает нагрузку на сервер при поисковых запросах).

 

Включите лог медленных запросов (позволяет найти запросы, которые выполняются дольше чем хотелось бы).

 

Переведите PHP в FastCgi (уменьшение издержек на старт PHP, вертится как сервер и обрабатывает запросы, можно вообще уйти от связки фронтэнд nginx + бэкэнд apache+php в сторону nginx + php-fastcgi).

 

Начинайте профилировать код.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Разобрался как профилировать запросы к БД (ничего самому писать не нада:D )

 

initdata.php

define( 'IPS_SQL_DEBUG_MODE', 1 );

К url добавляем параметр debug=1 и наслаждаемся подробной статистикой;)

 

Выборки удалось немного ускорились влючением кэша (по умолчанию отлючен - query_cache_size 0 ):

 

thread_cache_size = 12
query_cache_size = 8M

В общем, мускуль работает как надо. Число транзакций/секунда подросло до ~2.25. На этом оптимизацию БД и закончим:)))

 

Переведите PHP в FastCgi (уменьшение издержек на старт PHP, вертится как сервер и обрабатывает запросы, можно вообще уйти от связки фронтэнд nginx + бэкэнд apache+php в сторону nginx + php-fastcgi).

Видимо этим я и займусь в ближайшее время.

 

P.S. Прошу откликнуться на мою просьбу - сообщите ваши данные "Total Memory Used"

initdata.php

define( 'IPS_MEMORY_DEBUG_MODE', 1 );

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Видимо этим я и займусь в ближайшее время.

Ндамс, решил проанализировать данный вопрос fastCGI vs Mod_php.

Если честно, мне не удалось оценить преимущество первого:D

 

Но по порядку.

 

Подключил php через mod_fcgid (аналог fastcgi). Для апача2 рекомендовали именно его...хотя где как. Т.к. в репозитории был только этот - я долго не колебался.

Возникла куча вопросов к докам, на офф. сайте (http://fastcgi.coremail.cn/) информации кот наплакал (или хитро спрятана, китайцы ведь), особенно касательно тонкой настройки. Гугл нам в помощь...настроил - работает.

 

Однако, долго я не радовался. По результатам моих тестов mod_fcgid уступает mod_php: примерно на 5-7%, но еще при этом он кушал несколько больше памяти...я ожидал совершенно другого;)

В общем, я решил пока остаться на связке nginx (front-end) + apache (back-end) + mod_php:) Вот подкоплю опыта и только тогда попробую nginx + php_fpm.

 

P.S. На мою просьбу ("Total Memory Used") кто-нибудь откликнется?

Изменено пользователем proit
Ссылка на комментарий
Поделиться на других сайтах

  • 0

интересно всегда было что самое жирное в запросе, в общем предполагал что база с постами, но думал что меньше :D

 

Select Query

SELECT * FROM ibf_posts WHERE queued=0

table type possible_keys key key_len ref rows Extra

ibf_posts ALL 18898 Using where

MySQL time: 0,17885-0,23431

что составляет 50-90% времени запросов в зависимости от того какая страница форума.

 

и переодически интересует вопрос что прийдётся делать когда форум проживёт не 1 год а больше...

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Что бы чуток облегчить страдания форума, стоит включить кэш на уровне мускула (раз уж на уровне форума не работает).

Добавьте в конфиг my.cnf строчки:

thread_cache_size = 12

query_cache_size = 8M

Размер кэша подкорректируйте под свои ресурсы.

Изменено пользователем proit
Ссылка на комментарий
Поделиться на других сайтах

  • 0
P.S. На мою просьбу ("Total Memory Used") кто-нибудь откликнется?

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

 

У меня через fastCGI как-то работал Ruby - выедал всю память и падал через 15 минут. С тех пор зарекся "дружить" с этой штукой.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Распишите подробнее, что именно нужно сделать и какой результат получить. Ранее не приходилось с этой штукой сталкиваться.

В initdata.php ищите define( 'IPS_MEMORY_DEBUG_MODE', 0 ); и ставите 1

После, в футере форума у вас будет показана трассировка использованной памяти:D

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

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

Гость
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.