Freebsd + куча вп Hdd не справляется - Форум успешных вебмастеров - GoFuckBiz.com - Страница 5
 
 
Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB90.2486
BTC/USD68552.9098
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 03.12.2011, 12:50
Start Post: Freebsd + куча вп Hdd не справляется 
  #41
MyName
Китайский пельмень
 
Аватар для MyName
 
Регистрация: 23.07.2008
Сообщений: 1,000
Бабло: $323219
По умолчанию

сабж.

как можно оптимизировать?
вп порядка 600 шт + по мелочи сайтики. стоит w3 total cache кеширует mysql страницы не кешируется. (для одного плагина надо обновление страниц в реальном времени.)

на серваке ram 16GB есть мысль туда что-то перекинуть в tmpfs.

сейчас mysql'ю там выдано место для временных таблиц. работать стало быстрее но все равно морозится особенно при наплыве ботов.
так же стоит apc с размером кеша 780 mb пробовал ставить больше но % попаданий в кеш существенно не увеличивается что при 1gb что при 2gb 1 фиг. W3 в него не пишет т.к. раньше было все настроенно без него сейчас менять замучаешся... да и 600+ блогов в кеш запихнуть достаточно проблематично
mysql на кешы тоже рам выдано прилично

конфиг:
PHP код:
[MYSQLD]
tmpdir=/mnt/mysqltmp
skip
-locking
sort_buffer_size 
2M
read_buffer_size 
2M
read_rnd_buffer_size 
2M

    key_buffer_size
=256M
    query_cache_size
=2G
    query_cache_limit
=512M
    tmp_table_size
=384M
    max_heap_table_size
=384M
    thread_cache_size
=16
    table_cache
=64000
    innodb_buffer_pool_size
=128M
    max_connections
=1000
    wait_timeout 
=2500
    interactive_timeout
=2500
thread_concurrency 
8

skip
-federated
skip
-bdb
skip
-name-resolve 
mysqltuner:
PHP код:
-------- General Statistics --------------------------------------------------
[--] 
Skipped version check for MySQLTuner script
[OKCurrently running supported MySQL version 5.0.92
[OKOperating on 64-bit architecture

-------- Storage Engine Statistics -------------------------------------------
[--] 
Status: -Archive -BDB -Federated +InnoDB -ISAM -NDBCluster
[--] Data in MyISAM tables1G (Tables8029)
[--] 
Data in InnoDB tables8M (Tables6)
[--] 
Data in MEMORY tables0B (Tables12)
[!!] 
Total fragmented tables295

-------- Security Recommendations  -------------------------------------------
[
OKAll database users have passwords assigned

-------- Performance Metrics -------------------------------------------------
[--] 
Up for: 57m 59s (107K q [30.855 qps], 10K connTX358MRX17M)
[--] 
Reads Writes89% / 11%
[--] 
Total buffers2.8G global + 6.4M per thread (1000 max threads)
[
OKMaximum possible memory usage9.0G (52of installed RAM)
[
OKSlow queries0% (409/107K)
[
OKHighest usage of available connections55% (559/1000)
[
OKKey buffer size total MyISAM indexes256.0M/138.3M
[OKKey buffer hit rate97.9% (668K cached 14K reads)
[
OKQuery cache efficiency42.7% (30K cached 70K selects)
[
OKQuery cache prunes per day0
[OKSorts requiring temporary tables0% (0 temp sorts 6K sorts)
[!!] 
Temporary tables created on disk38% (4K on disk 11K total)
[
OKThread cache hit rate88% (1K created 10K connections)
[
OKTable cache hit rate99% (8K open 8K opened)
[
OKOpen file limit used18% (17K/90K)
[
OKTable locks acquired immediately99% (60K immediate 60K locks)
[
OKInnoDB data size buffer pool8.2M/128.0M

-------- Recommendations -----------------------------------------------------
General recommendations:
    
Run OPTIMIZE TABLE to defragment tables for better performance
    MySQL started within last 24 hours 
recommendations may be inaccurate
    Enable the slow query log to troubleshoot bad queries
    Temporary table size is already large 
reduce result set size
    Reduce your SELECT DISTINCT queries without LIMIT clauses 
hdd с отключенным апачем

PHP код:
# diskinfo -t ada0
ada0
        512             
# sectorsize
        
500107862016    # mediasize in bytes (466G)
        
976773168       # mediasize in sectors
        
0               # stripesize
        
0               # stripeoffset
        
969021          # Cylinders according to firmware.
        
16              # Heads according to firmware.
        
63              # Sectors according to firmware.
        
5VJ8MPVP        # Disk ident.

Seek times:
        
Full stroke:      250 iter in   7.160039 sec =   28.640 msec
        Half stroke
:      250 iter in   4.539064 sec =   18.156 msec
        Quarter stroke
:   500 iter in   6.842026 sec =   13.684 msec
        Short forward
:    400 iter in   3.325927 sec =    8.315 msec
        Short backward
:   400 iter in   3.012394 sec =    7.531 msec
        Seq outer
:       2048 iter in   0.165592 sec =    0.081 msec
        Seq inner
:       2048 iter in   0.584486 sec =    0.285 msec
Transfer rates
:
        
outside:       102400 kbytes in   0.995734 sec =   102839 kbytes/sec
        middle
:        102400 kbytes in   1.160060 sec =    88271 kbytes/sec
        inside
:        102400 kbytes in   1.930989 sec =    53030 kbytes/sec 
hdd с включенным апачем

PHP код:
s114# diskinfo -t ada0
ada0
        512             
# sectorsize
        
500107862016    # mediasize in bytes (466G)
        
976773168       # mediasize in sectors
        
0               # stripesize
        
0               # stripeoffset
        
969021          # Cylinders according to firmware.
        
16              # Heads according to firmware.
        
63              # Sectors according to firmware.
        
5VJ8MPVP        # Disk ident.

Seek times:
        
Full stroke:      250 iter in 660.203254 sec 2640.813 msec
        Half stroke
:  
дальше не дождался да и вообще похоже что он повесился.... 
wp сайты - сплоги так что потеря небольшой части данных не критична.
думаю перекидывать при загрузки все базы на ram диск при загрузке и раз в полчаса-час по крону копировать их на hdd

но тут вопрос.. как подобный процесс пройдет при запущенном mysql и соответственно возможно изменяемой бд.... не грохнитсяли база? + надо учитывать что на hdd нагрузка может быть от чтения php файлов соответственно процесс может затянутся

может кто с подобной проблеммой сталкивался и есть какие-то решения?
__________________
Карму правят тут.
MyName вне форума  
Старый 19.12.2011, 20:55   #42
medar
кодер-энтузиаст
 
Аватар для medar
 
Регистрация: 04.04.2007
Адрес: Джамайка
Сообщений: 3,381
Бабло: $447150
По умолчанию

wiam, в общем, у меня для тебя плохие новости. Ты, похоже, уперся в недостаток архитектуры wp и это не лечится ни безусловно нужным wp-super-cache, ни оптимизацией на уровне сервера. Ну, если не уперся - то обязательно упрешься через некоторое время.

У wp есть один запросик, если не ошибаюсь, он строит пагинацию. Для пагинации нужно знать количество постов по данному тэгу, месяцу, категории и т.п. Этот запрос дико медленный, и еще и с GROUP BY. Какое суперкэширование ты не ставь - рано или поздно кэш придется обновлять. Особенно если ты постишь часто (часто - это не пост в 1-2 дня, а чаще). Этот запрос заставляет mysql шерстить всю базу posts. Этот запрос выполняется долго, и он, к тому же, лочит таблицу, так как MyISAM. Если блогов много, то рано или поздно момент инвалидации кэшей наступает у двух или более блогов. И тогда наступает эффект снежного кома, когда одно начинает тормозить другое, растет число ожидающих коннектов, начинает есться память и все начинает тормозить еще больше.

Выход из этого - только патчить код wp. Вот тут описана сия проблема и решение: http://x-pose.org/2011/08/fix-the-wo...ound_rows-bug/

Открытый тикет с этой проблемой так и не пофиксили, по крайней мере в 3.2.1.
medar вне форума  
Старый 19.12.2011, 21:25   #43
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
По умолчанию

Цитата:
Сообщение от wiam Посмотреть сообщение
это как ?
про починку индексов - это я имел ввиду добавь key_buffer_size

Цитата:
и теги прямо из базы можно удалить ? на одном блоге 4к тегов, из админки до утра буду их стирать
можно через админку, или написать скрипт на php, чтобы облегчить рутинные нажатия кнопок. Можно напрямую из базы, но это сложнее, т.к. там не одна таблица, а связка таблиц. И удалять обязательно нужно изо всех таблиц, чтобы не нарушить целостность индексов. Как вариант, можно временно сконвертить таблицы в innodb, настроить автоматическое сохранение целостности сущеностей и дальше удалять только в одной главной таблице сущности, вроде wp_terms

medar, либо переходить на друпал. Я специально смотрел эту проблему там. Она там решена: там нет того дополнительного ужасного JOIN'а при запросе таксономий, т.е. они используют кеширование sql-таблиц в избыточные sql-таблица, понижая "начальную форму". И плюс обычное кеширование друпала вроде тоже помогает, тут точно не помню уже.

Но у меня был опыт запуска большой сетки вп блогов, я так и не уперся в снежный ком. Тормозило конечно, но чтобы прям совсем пиздец - такого не было. Все таки оптимизация прибавляет много мощи. раз в 20-50 можно разогнать
__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser
chesser вне форума  
Старый 19.12.2011, 23:55   #44
wiam
Member
 
Аватар для wiam
 
Регистрация: 10.06.2008
Сообщений: 77
Бабло: $21324
По умолчанию

Спасибо за ответы/советы. В существующей пачке блогов почищу теги и категории, плагины по-отрубал уже. Ну и походу nginx+php_fpm+xcache/apc+кеширование страниц с помощью nginx будет самым нормальным вариантом. Ну а на будущее drupal.
wiam вне форума