Co to jest duża liczba połączeń? Maszyna Erlangs VM wykorzystuje wewnętrzne koło czasowe do obsługi timerów, dzięki czemu skaluje się dość dobrze do kilku tysięcy połączeń. Wtedy możesz wpaść w kłopoty.
Zazwyczaj chodzi o to, aby zgrupować pids razem na zegary. Właśnie to robią jądra. Jeśli na przykład masz zegar, który musi się obudzić w ciągu 200 ms, planujesz się przed czasem, a nie następnym razem, ale kolejny 200 ms ponownie. Oznacza to, że będziesz czekał co najmniej 200ms, a może 400ms, a 300ms będzie typowy. Dzięki przybliżeniu takich timerów można uruchomić o wiele więcej, ponieważ jeden zegar może jednorazowo obudzić dużą liczbę procesów. Ale w zależności od częstotliwości timera i ilości timerów może wystarczyć standardowy send_after/3
.
W każdym razie, zacznę od założenia, że może on skalować, a następnie obsłużyć problem, jeśli nie można tego zrobić, wykonując przybliżony czas, jak przewidziano powyżej.