У меня есть выделенный сервер с 2 процессорами, 4 ядрами и 16 ГБ оперативной памяти. Я размещаю некоторые приложения php, которые используют высокое использование php и mysql, когда я проверяю верхнюю команду, я обнаруживаю, что php и mysql потребляют около 80% ЦП, но при проверке команды mpstat чтобы проверить использование каждого ядра, я обнаружил, что все они на 95% простаивают, какое-либо объяснение этому? обратите внимание, что сервер становится медленным при запуске этих приложений. мне нужен другой сервер с большим количеством ядер?
top command out put:
7589 root 20 0 287648 31480 18540 R 78.7 0.2 1:49.11 php
1006 mysql 20 0 2400692 214440 6704 S 19.3 1.3 434:34.99 mysqld
18 root 20 0 0 0 0 S 2.0 0.0 1435:51 ksoftirqd/2
3 root 20 0 0 0 0 S 1.3 0.0 1424:58 ksoftirqd/0
5228 www-data 20 0 339616 29608 17772 S 1.3 0.2 0:00.72 apache2
mpstat -P ALL output:
root@datax:~# mpstat -P ALL
Linux 3.16.0-4-amd64 (datax) 08/15/2016 _x86_64_ (4 CPU)
04:01:58 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
04:01:58 AM all 1.49 0.13 0.83 2.23 0.00 0.03 0.00 0.00 0.00 95.29
04:01:58 AM 0 1.38 0.13 0.62 2.30 0.00 0.03 0.00 0.00 0.00 95.54
04:01:58 AM 1 1.38 0.13 0.62 2.32 0.00 0.03 0.00 0.00 0.00 95.53
04:01:58 AM 2 1.62 0.13 1.04 2.15 0.00 0.03 0.00 0.00 0.00 95.03
04:01:58 AM 3 1.59 0.13 1.04 2.16 0.00 0.03 0.00 0.00 0.00 95.06
Если вы запускаете один экземпляр кода за раз, а код не является многопоточным, большее количество ядер вам не поможет.
PHP может использовать несколько ядер с множеством одновременных запросов, так как тогда нет внутренних зависимостей кода, которые мешают многопоточности.