Назад | Перейти на главную страницу

выяснение причины высокой нагрузки сверху и iotop

Что делать, если я хочу предотвратить такую ​​высокую нагрузку.
Мой веб-сайт становится медленным, когда загрузка превышает 8.
См. Также результат iotop.

top - 20:23:10 up 127 days,  3:22,  1 user,  load average: 9.92, 9.87, 9.81
Tasks: 1031 total,   3 running, 1027 sleeping,   0 stopped,   1 zombie
Cpu(s): 14.7%us,  0.7%sy,  0.1%ni, 79.6%id,  4.7%wa,  0.0%hi,  0.2%si,  0.0%st
Mem:  16413676k total, 16312548k used,   101128k free,   110836k buffers
Swap: 10190840k total,  3182468k used,  7008372k free,  2033604k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 2776 mysql     15   0 14.6g  10g 5220 S 405.7 67.4  21710:40 mysqld
 6201 apache    15   0  369m  16m 5356 S  3.7  0.1   0:00.40 httpd
 8447 apache    15   0  368m  15m 5364 S  3.7  0.1   0:00.27 httpd
10807 apache    16   0  368m  14m 4640 S  3.7  0.1   0:00.04 httpd
11074 root      15   0 11548 1668  676 R  3.7  0.0   0:00.04 top
 2088 apache    15   0  368m  15m 5972 S  1.8  0.1   0:00.93 httpd
 2737 root      15   0  3824  392  336 S  1.8  0.0 433:37.40 klogd
 6879 apache    15   0  367m  15m 5652 S  1.8  0.1   0:00.39 httpd
 8457 apache    15   0  367m  15m 5744 S  1.8  0.1   0:00.54 httpd
 8866 apache    15   0  369m  15m 4832 S  1.8  0.1   0:00.18 httpd
 9147 apache    15   0  368m  14m 4960 S  1.8  0.1   0:00.15 httpd
 9884 apache    16   0  368m  16m 6508 S  1.8  0.1   0:03.97 httpd
10583 apache    16   0  368m  15m 5148 S  1.8  0.1   0:00.10 httpd
10731 apache    15   0  367m  13m 3484 S  1.8  0.1   0:00.16 httpd
10782 apache    16   0  367m  12m 3544 S  1.8  0.1   0:00.04 httpd
14618 apache    15   0  367m  16m 6736 S  1.8  0.1   0:03.24 httpd
18697 apache    15   0  368m  16m 6744 S  1.8  0.1   0:02.47 httpd
 vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  1 3182636 468436 111776 2012016    0    0    94   274    0    0 15  1 80  5  0
iostat
Linux 2.6.18-274.12.1.el5 ()        12/31/2012

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          14.66    0.12    0.93    4.73    0.00   79.56

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda             122.97      1504.32      4383.82 16525670026 48158254126
sda1              0.00         0.04         0.00     435456        230
sda2            122.97      1504.28      4383.82 16525231218 48158253896
dm-0            570.94      1502.31      4381.94 16503546226 48137527328
dm-1              0.48         1.97         1.89   21684608   20727136

io top
Total DISK READ: 126.48 K/s | Total DISK WRITE: 6.79 M/s (is'nt  this too high?)
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND
15610 be/4 mysql       0.00 B/s    0.00 B/s 99.99 % 25.76 % mysqld --basedi~mysql/mysql.sock
15622 be/4 mysql       0.00 B/s    0.00 B/s -7.28 % 24.92 % mysqld --basedi~mysql/mysql.sock
 3659 be/4 mysql       7.44 K/s    5.88 M/s  0.00 % 13.71 % mysqld --basedi~mysql/mysql.sock
 2822 be/4 mysql       0.00 B/s    0.00 B/s  2.88 % 10.22 % mysqld --basedi~mysql/mysql.sock
 2819 be/4 mysql       0.00 B/s    0.00 B/s  0.00 %  9.71 % mysqld --basedi~mysql/mysql.sock
15635 be/4 mysql       0.00 B/s    0.00 B/s -3.72 %  8.09 % mysqld --basedi~mysql/mysql.sock
15629 be/4 mysql       0.00 B/s    0.00 B/s -2.42 %  5.58 % mysqld --basedi~mysql/mysql.sock
  801 be/3 root        0.00 B/s  208.31 K/s  0.00 %  3.97 % [kjournald]
 2842 be/4 root        0.00 B/s    0.00 B/s  8.09 %  3.81 % irqbalance
 2820 be/4 mysql       0.00 B/s    0.00 B/s  0.00 %  2.88 % mysqld --basedi~mysql/mysql.sock
 7001 be/4 apache      0.00 B/s    0.00 B/s  0.00 %  2.70 % httpd
15636 be/4 mysql       0.00 B/s    0.00 B/s 10.32 %  2.51 % mysqld --basedi~mysql/mysql.sock
 8034 be/4 apache      0.00 B/s    0.00 B/s  0.00 %  2.42 % httpd
 2140 be/4 apache      0.00 B/s    0.00 B/s  0.00 %  2.32 % httpd

Ваша конкретная проблема, безусловно, связана с вводом-выводом из-за того, насколько глубоко в ваше пространство подкачки mySQL затолкнул вас. В идеале вы должны использовать нуль В большинстве случаев с момента, когда ОС начинает перекачивать память на диск, ваша производительность резко упадет, поскольку процессы ожидают ввода-вывода. Думайте об этом как Performance = 1 / N ^ swap где, поскольку ОС использует больше места подкачки, производительность обычно увеличивается экспоненциально хуже. Вам кажется 3 гигабайты глубоко в вашем пространстве подкачки, что просто ужасно для меня.

Если после того, как вы изменили настройки mySQL, как вы упомянули, вы по-прежнему усредняете больше, чем несколько мегабайты при обмене вы должны учитывать: [от лучшего к худшему, 2 и 3 примерно связаны]

  1. Оптимизация схемы базы данных и запросов.
  2. Добавление оперативной памяти к машине.
  3. Разделение сервера mySQL на другую выделенную машину.
  4. Перенос пространства подкачки на высокоскоростное устройство, такое как SSD. [это убивает SSD]

Что делать, если я хочу предотвратить такую ​​высокую нагрузку.

Сервер FAster, лучшее программирование?

серьезно, вы смотрите на это не с той стороны. ЛАЙК: «Я таксист, езжу слишком много километров в день, как мне это сократить». Ваша сторона запроса исправлена ​​(без учета таких вещей, как атаки ddos), и элементы должны обслуживаться.

Таким образом, он упирается в - получите более мощный сервер, назначьте больше оперативной памяти для кеширования (более мощный сервер) или ударьте некоторых программистов палкой «исправляйте ошибки», чтобы они писали лучший код.

В этом случае это может быть проблема mySql, но тогда это то, что вернется к разработчикам сайта как «используйте индексы, парни» или «напишите лучше запросы». Не то чтобы я этого не видел (sql server, portal, ZERO index, сервер "умер", когда IO съел все). Но это то, что разработчики сайтов должны исправить.

Исходя из данных здесь, вы ОБМЕНАЕТесь. Это действительно убивает вашу производительность, так как это то, что делает любой тип подкачки.

Мое немедленное предложение - удвоить объем памяти, имеющейся у вас в машине ... и, конечно, увеличить пространство подкачки, чтобы оно соответствовало размеру памяти.

Я думаю, что Mysql - это ваша проблема. Вы используете всю свою память, что вызывает свопинг. Своп вызывает более высокий ЦП, потому что ваш раздел подкачки заполняется, и ваш ввод-вывод не может обрабатывать ничего другого. Как видите, своп используется, но еще не заполнен. Хотя более быстрый диск интересен, вам также следует увеличить объем памяти. Своп предназначен только для случайного, а не постоянного использования.