Перейти к контенту
  • 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

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

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить на вопрос...

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

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

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

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

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

Зарузка...

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

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

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