Порой необходимо определить количество ядер на сервере. Понятно, ты можешь вызвать top/htop и визуально глянуть цифру.
Но мыж с тобой не пальцем деланные, нам надо всё по уму, как тру программисты. Чтобы можно было это в скрипт засунуть и далее плясать от полученного результата. 💃
Для подсчета количества ядер, есть несколько способов:
1. grep -wc '^processor' /proc/cpuinfoЭто не единственные способы заполучить желаемое, но самые релевантные. Кстати
2. getconf _NPROCESSORS_ONLN
3. nproc --all
getconf актуален и для макаводов (osx).Для чего нам знать количество ядер? Вопрос хороший, каждый для себя сам решает. Всё зависит от задач.
К примеру заскейлил ты тачку в Selectel, через их веб панельку, но nginx продолжает работать на старом конфиге. После этого очень желательно сразу переопределить в
nginx.conf параметр worker_processes. Если Nginx выполняет работу нагружающую процессор (например SSL или gzipping), то оптимально установить эту директиву в значение, равное количеству ядер процессора.
Также, директива worker_processes, умноженная на worker_connections из секции event, даст максимально возможное количество клиентов.
Конечно же справедливо всё это ансиблом (ansible) или террой (terraform) раскатать, но это дополнительный геморрой, который никому не нужен. По крайней мере, когда это нужно было еще вчера и нет возможности писать лапшу из плейбуков.
Проще уж из скрипта узнать количество ядер, все посчитать и тем же sed’ом зареврайтить нужный тебе конфиг. Вешаешь его на крон, а оно следит за твоими ядрами и в нужный момент делает всё автоматически, хоть там каждую минуту горизонтально-вертикальным масштабированием занимайся.
Прототип без ифов, так, для наглядности:
#!/bin/bashБери на вооружение, пригодится. 😮💨
CPU_CORES=$(grep -wc '^processor' /proc/cpuinfo)
sed -i "s/worker_processes.*/worker_processes $CPU_CORES;/" /etc/nginx/nginx.conf
systemctl reload nginx
Ну а я желаю тебе хороших предстоящих выходных и береги себя! Мож чо на выходные еще закину интересного почитать.
tags: #linux #nginx
—
🟢 Подпишись: @bashdays