У меня есть облачный сервер: 5120 ОЗУ и 4,6 ГГц
У меня вопрос: если я добавлю больше ЦП (11,5 ГГц), будет ли время загрузки страниц выше? Я имею в виду, всегда ли это постепенно? Больше ЦП = более быстрая загрузка страницы? А если нет, то как это работает и как я могу узнать об этом подробнее?
ОБНОВИТЬ: Ответ Symcbean был очень ясным. Но есть еще кое-что, чего я не понимаю (и то, что я нахожу в Google, многие люди не понимают). Я попытался выразить это в метафоре:
Допустим, у меня есть ведро с водой (ведро с водой = процесс PHP, с кешированием и т. Д.). Я хочу вылить ведро в воронку. (конец воронки = скорость сервера, чем больше конец воронки, тем быстрее по нему течет вода)
Если у меня конец воронки 0,5 дюйма, он проходит медленно. Если у меня один дюйм, он идет быстрее. Но если конец воронки (скажем) 10 дюймов, не имеет значения, 10 дюймов у меня или 20 дюймов, вода проходит через него с той же скоростью.
Итак, с этим метапередом я имею в виду; как мне узнать, что я использую 100% емкости, и как я узнаю, что мне не нужно больше ...?
PS: Я был бы очень признателен, если бы кто-нибудь мог объяснить, что такое макс, и как это на самом деле работает или как я могу это узнать?
PPS: это результат, когда я запускаю 'top'
top - 23:06:18 up 54 days, 6:08, 1 user, load average: 0.51, 0.43, 0.47
Tasks: 107 total, 2 running, 105 sleeping, 0 stopped, 0 zombie
Cpu(s): 28.1%us, 1.5%sy, 0.0%ni, 70.2%id, 0.0%wa, 0.0%hi, 0.0%si, 0.2%st
Mem: 4966748k total, 4493968k used, 472780k free, 241436k buffers
Swap: 4194300k total, 123252k used, 4071048k free, 2836028k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
16432 root 20 0 1115m 283m 30m R 95 5.8 1:11.39 php
16422 www-data 20 0 927m 45m 21m S 18 0.9 0:00.53 apache2
20270 mysql 20 0 2327m 330m 5500 S 7 6.8 474:19.11 mysqld
617 n2 20 0 14268 1140 488 S 1 0.0 182:58.64 n2txd
30212 root 20 0 0 0 0 S 1 0.0 24:50.48 flush-202:1
26848 root 20 0 99424 1108 856 S 0 0.0 2:47.63 sendmail-mta
1 root 20 0 24188 1556 872 S 0 0.0 0:09.09 init
2 root 20 0 0 0 0 S 0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0 0.0 0:48.36 ksoftirqd/0
4 root 20 0 0 0 0 S 0 0.0 1:27.21 kworker/0:0
5 root 20 0 0 0 0 S 0 0.0 0:00.05 kworker/u:0
6 root RT 0 0 0 0 S 0 0.0 0:00.00 migration/0
7 root RT 0 0 0 0 S 0 0.0 0:26.69 watchdog/0
8 root RT 0 0 0 0 S 0 0.0 21841:40 migration/1
9 root 20 0 0 0 0 S 0 0.0 0:00.00 kworker/1:0
10 root 20 0 0 0 0 S 0 0.0 0:56.84 ksoftirqd/1
11 root RT 0 0 0 0 S 0 0.0 0:23.78 watchdog/1
12 root RT 0 0 0 0 S 0 0.0 0:00.00 migration/2
13 root 20 0 0 0 0 S 0 0.0 0:00.00 kworker/2:0
14 root 20 0 0 0 0 S 0 0.0 0:48.05 ksoftirqd/2
15 root RT 0 0 0 0 S 0 0.0 0:19.11 watchdog/2
16 root RT 0 0 0 0 S 0 0.0 0:00.00 migration/3
17 root 20 0 0 0 0 S 0 0.0 0:00.00 kworker/3:0
18 root 20 0 0 0 0 S 0 0.0 0:40.08 ksoftirqd/3
19 root RT 0 0 0 0 S 0 0.0 0:19.24 watchdog/3
20 root 0 -20 0 0 0 S 0 0.0 0:00.00 cpuset
21 root 0 -20 0 0 0 S 0 0.0 0:00.00 khelper
22 root 20 0 0 0 0 S 0 0.0 0:00.00 kdevtmpfs
23 root 0 -20 0 0 0 S 0 0.0 0:00.00 netns
24 root 20 0 0 0 0 S 0 0.0 0:00.00 kworker/u:1
25 root 20 0 0 0 0 S 0 0.0 0:00.00 xenwatch
26 root 20 0 0 0 0 S 0 0.0 0:00.00 xenbus
27 root 20 0 0 0 0 S 0 0.0 0:22.29 sync_supers
28 root 20 0 0 0 0 S 0 0.0 0:00.42 bdi-default
29 root 0 -20 0 0 0 S 0 0.0 0:00.00 kintegrityd
30 root 0 -20 0 0 0 S 0 0.0 0:00.00 kblockd
31 root 20 0 0 0 0 S 0 0.0 1:57.23 kworker/2:1
32 root 0 -20 0 0 0 S 0 0.0 0:00.00 ata_sff
33 root 20 0 0 0 0 S 0 0.0 0:00.00 khubd
34 root 0 -20 0 0 0 S 0 0.0 0:00.00 md
36 root 20 0 0 0 0 S 0 0.0 0:01.45 khungtaskd
37 root 20 0 0 0 0 S 0 0.0 0:29.28 kswapd0
38 root 25 5 0 0 0 S 0 0.0 0:00.00 ksmd
39 root 20 0 0 0 0 S 0 0.0 0:00.00 fsnotify_mark
40 root 20 0 0 0 0 S 0 0.0 0:00.00 ecryptfs-kthrea
41 root 0 -20 0 0 0 S 0 0.0 0:00.00 crypto
49 root 0 -20 0 0 0 S 0 0.0 0:00.00 kthrotld 50 root 20 0 0 0 0 S 0 0.0 0:00.00 khvcd 51 root 20 0 0 0 0 S 0 0.0 1:19.07 kworker/3:1 70 root 0 -20 0 0 0 S 0 0.0 0:00.00 devfreq_wq 71 root 20 0 0 0 0 S 0 0.0 1:03.05 kworker/0:1 190 root 20 0 0 0 0 S 0 0.0 1:31.64 kworker/1:1 193 root 20 0 0 0 0 S 0 0.0 2:52.19 jbd2/xvda1-8
Похоже, узким местом вашего процессора является PHP, а не Apache.
Кажется, у вас 4 ядра ЦП, но процесс PHP выполняется только на одном из них; в зависимости от того, как вы все настроили, PHP может не использовать все доступные ядра ЦП для различных запросов. Сколько запросов было обработано в то время, когда нагрузка находилась в этом состоянии?
Если PHP работает только с одним потоком, вам необходимо настроить его для выполнения разных запросов на разных ядрах, чтобы использовать существующую мощность.
Если в это время PHP просто выполняет один запрос, и этот запрос все еще возвращается слишком медленно, то большее количество ядер не поможет, и вам потребуется выполнить некоторую оптимизацию и кеширование.
Не уверен, где Шейн видит 4 процессора в вашем верхнем продукте. Конечно, их больше одного. Однако ваша средняя загрузка показывает, что никогда не используется более половины ваших процессоров. Следовательно, добавление большего количества процессоров не сделает его быстрее.
Время отклика страницы очень сильно отличается от времени выполнения PHP. Обычно время загрузки страницы будет в 6-10 раз больше, чем время генерации HTML (при условии, что PHP относительно эффективен) - разница в основном связана с тем, что происходит на сетевом уровне и в браузере. Такие инструменты, как медленный и webpagetest поможет улучшить производительность внешнего интерфейса. Я бы порекомендовал приобрести хорошую книгу по этой теме - например, вот этот. Есть много хороших постов, о которых идет речь веб-производительность здесь и о Производительность MySQL здесь.
Такие вещи, как верхняя часть, средняя загрузка, использование процессора, бесплатно, vmstat и другие, хороши для того, чтобы рассказать вам, как ограничена производительность вашего сервера, но, как и выше, это должно быть только очень небольшой частью истории жизненного цикла страницы. Судя по предоставленному вами снимку, оборудование не облагается чрезмерными налогами (может быть узкое место ввода-вывода, но это трудно увидеть по этим показателям).
Если у вас есть основания подозревать, что ваш PHP-код довольно медленный, начните регистрировать и анализировать данные вашего запроса. Сколько времени требуется для генерации ваших PHP-запросов? Какое время загрузки вашей страницы?
Одна вещь, которая действительно выделяется из верхнего вывода, который вы показали, - это то, что есть только один видимый экземпляр PHP и единственный экземпляр Apache. Как настроен Apache? Какой MPM? Как это связано с PHP? Если вы используете CGI, вы должны получить большие улучшения, переключившись на PHP-fpm или mod_php. Ты используешь кеш кода операции?
Ваш mysqld имеет довольно много циклов ЦП - вы можете начать анализировать журнал запросов и настраивать его. Попробуйте бежать mysqltuner против вашего экземпляра.
Я понимаю, что задаю здесь много вопросов, но решение «как ускорить работу моего веб-сайта» заняло бы очень большую книгу. Мне потребовалось бы около 2 дней работы, чтобы правильно настроить сервер для сбора данных, чтобы полностью проанализировать его производительность - и по крайней мере 5 дней, чтобы провести анализ - и это прежде, чем приступить к поиску решений проблем, то есть вам вряд ли получим конкретный ответ здесь, на Stack Overflow (я просто пытаюсь указать вам, как задать правильные вопросы).