Ну вот и пятница на носу. Хотя какая разница, какой день недели, если ты работаешь 24/7. Чем займёмся сегодня? Давай чем-нибудь простым и интересным.
Порой необходимо определить количество ядер на сервере. Понятно, ты можешь вызвать top или htop и визуально глянуть цифру.
Но мы ж с тобой не пальцем деланные, нам надо всё по уму, как тру-программисты. Чтобы можно было это в скрипт засунуть и далее плясать от полученного результата.
Для подсчёта количества ядер есть несколько способов:
# Число логических процессоров из /proc/cpuinfo
grep -wc '^processor' /proc/cpuinfo
# Число процессоров, доступных текущему процессу
getconf _NPROCESSORS_ONLN
# Число процессоров, доступных текущему процессу
nproc
Это не единственные способы заполучить желаемое, но самые релевантные. Кстати, getconf актуален и для маководов (macOS).
Для чего нам знать количество ядер? Вопрос хороший, каждый для себя сам решает. Всё зависит от задач.
К примеру, заскейлил ты тачку в Selectel через их веб-панельку, но Nginx продолжает работать на старом конфиге. После этого очень желательно сразу переопределить в nginx.conf параметр worker_processes.
Если Nginx выполняет работу, нагружающую процессор (например, SSL или gzipping), то оптимально установить эту директиву в значение, равное количеству доступных процессоров.
Современный Nginx умеет делать это сам через worker_processes auto;, поэтому ручной расчёт обычно не нужен.
Конечно же, справедливо всё это Ansible или Terraform раскатать, но это дополнительный геморрой, который никому не нужен. По крайней мере, когда это нужно было ещё вчера и нет возможности писать лапшу из плейбуков.
Вешаешь его на крон, а оно следит за твоими ядрами и в нужный момент делает всё автоматически, хоть там каждую минуту горизонтально-вертикальным масштабированием занимайся.
Прототип без ифов, так, для наглядности:
#!/bin/bash
CPU_CORES=$(nproc)
sed -i "s/worker_processes.*/worker_processes $CPU_CORES;/" /etc/nginx/nginx.conf
nginx -t && systemctl reload nginx
Бери на вооружение, пригодится.
Ну а я желаю тебе хороших предстоящих выходных и береги себя! Может, что на выходные ещё закину интересного почитать.








Комментарии