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

Очень высокая загрузка ЦП и низкое использование ОЗУ - можно ли перенести часть загрузки ЦП в ОЗУ (с установленным CloudLinux LVE Manager)?

Мне пришлось установить CloudLinux, чтобы я мог в некоторой степени контролировать использование процессора и, что более важно, одновременные соединения, которые используют веб-сайты. Но, как вы можете видеть, нагрузка на сервер слишком высока, и поэтому некоторые сайты занимают до 10 секунд. загружать!


Сервер:

Вчера: 214 514 просмотров страниц (Awstat).

Теперь мой вопрос: могу ли я перенести часть использования ЦП на ОЗУ?

Или что еще я мог сделать, чтобы сайты работали быстрее (сайты динамические - поэтому SQL тяжелый)

Спасибо

top - 06:10:14 up 29 days, 20:37,  1 user,  load average: 11.16, 13.19, 12.81
Tasks: 526 total,   1 running, 524 sleeping,   0 stopped,   1 zombie
Cpu(s): 42.9%us, 21.4%sy,  0.0%ni, 33.7%id,  1.9%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   8146632k total,  7427632k used,   719000k free,   131020k buffers
Swap:  2104504k total,      132k used,  2104372k free,  4506644k cached

    PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND         
 318421 mysql     15   0 1315m 754m 4964 S 474.9  9.5  95300:17 mysqld          
   6928 root      10  -5     0    0    0 S  2.0  0.0  90:42.85 kondemand/3      
 476047 headus    17   0  172m  19m  10m S  1.7  0.2   0:00.05 php              
 476055 headus    18   0  172m  18m 9.9m S  1.7  0.2   0:00.05 php              
 476056 headus    15   0  172m  19m  10m S  1.7  0.2   0:00.05 php              
 476061 headus    18   0  172m  19m  10m S  1.7  0.2   0:00.05 php              
   6930 root      10  -5     0    0    0 S  1.3  0.0 161:48.12 kondemand/5      
   6931 root      10  -5     0    0    0 S  1.3  0.0 193:11.74 kondemand/6      
 476049 headus    17   0  172m  19m  10m S  1.3  0.2   0:00.04 php              
 476050 headus    15   0  172m  18m 9.9m S  1.3  0.2   0:00.04 php              
 476057 headus    17   0  172m  18m 9.9m S  1.3  0.2   0:00.04 php              
   6926 root      10  -5     0    0    0 S  1.0  0.0  90:13.88 kondemand/1      
   6932 root      10  -5     0    0    0 S  1.0  0.0 247:47.50 kondemand/7      
 476064 worldof   18   0  172m  19m  10m S  1.0  0.2   0:00.03 php              
   6927 root      10  -5     0    0    0 S  0.7  0.0  93:52.80 kondemand/2      
   6929 root      10  -5     0    0    0 S  0.3  0.0 161:54.38 kondemand/4      
   8459 root      15   0  103m 5576 1268 S  0.3  0.1  54:45.39 lvest

Проблема, очевидно, в веб-приложении, которое вы используете. Из top вывод кажется, что вы запускаете какой-то PHP-код. Вам необходимо выяснить, какая часть кода PHP вызывает проблему (напрямую или через доступ к базе данных).

Если пример top вывод описывает обычную ситуацию, я предполагаю, что какая-то часть ваши процессы блокируют друг друга на уровне приложений (какой-то конфликт блокировки).

Я делаю это на основании следующих фактов: низкий IO ждать время ( wa данные в top вывод), 33% простоя системы и высокая нагрузка. Это означает, что вы не используете все процессоры и не ждете ввода-вывода. В этом случае единственный способ сделать систему «слишком медленной» - сделать процессы последовательными (один процесс ожидает на ЦП №2, пока другой процесс не завершится на ЦП №1). Это происходит только при наличии более или менее явной блокировки между разными процессами. Если вы действительно не можете удалить межпроцессную блокировку, то единственный вариант - вложить средства в более быстрые ядра ЦП вместо нескольких медленных ядер. Ваш процессор уже довольно близок к первому уровню, поэтому я сначала рассмотрю код.

Вы спросили, можно ли использовать ОЗУ для уменьшения загрузки ЦП. Это возможно при агрессивном кэшировании, но только код приложения (PHP), который вы запускаете, может использовать этот компромисс. Опять же, вам нужно профилировать и изменять код PHP. Нет волшебного переключателя, который бы сказал: используйте больше памяти, меньше процессора, пожалуйста.

Вам нужно выяснить, что создает такую ​​большую нагрузку. Возможно, ваш сервер загружен несколькими задачами с интенсивным использованием ЦП или перегрузкой ввода-вывода.

В случае интенсивного ввода-вывода базы данных вы можете попробовать увеличить кеш базы данных - innodb_buffer_pool в mysql или shared_buffers в postgres.

РЕДАКТИРОВАТЬ: Ваш top вывод показывает, что ваша проблема связана с неоптимизированными запросами mysql. Если вы умеете управлять базами данных - узнайте медленные запросы и создайте соответствующие индексы или перепишите sql-запросы, чтобы устранить узкое место в процессоре mysql. Если это невозможно - купите более мощный процессор.

Я понятия не имею, что вы имеете в виду под «переносом использования процессора в оперативную память», но что бы вы ни имели в виду, по всей вероятности, это не сработает.

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

  • Слишком низкая пропускная способность ввода-вывода. Система ждет жестких дисков
  • Производительность базы данных
  • Неоптимизированное и / или ресурсоемкое программное обеспечение для веб-приложений.
  • Что-то совершенно другое, не связанное с вашим веб-приложением.