Kaç Süreç Açılmalı
Süreç Sayısı Nasıl Ayarlanır
Süreç sayısı, count özelliği tarafından belirlenir (Windows sistemleri süreç sayısı ayarını desteklemez), örneğin aşağıdaki kodda
use Workerman\Worker;
require_once __DIR__ . '/vendor/autoload.php';
$http_worker = new Worker("http://0.0.0.0:2345");
// ## Dışarıya hizmet vermesi için 4 süreç başlat ##
$http_worker->count = 4;
...
Süreç Sayısı Ayarlarken Dikkate Alınması Gereken Şartlar
-
CPU çekirdek sayısı
-
Bellek boyutu
-
İş yükü IO yoğun mu yoksa CPU yoğun mu
Süreç Sayısı Ayarlama İlkeleri
-
Her sürecin toplam bellek kullanımı toplam belleğin altında olmalıdır (genel olarak her iş süreci yaklaşık 40M bellek kullanır)
-
Eğer IO yoğun bir iş yükü varsa, yani işte bazı engarajlı IO'lar varsa, örneğin genel olarak MySQL, Redis gibi saklama yerlerine erişim engelleyici olduğundan süreç sayısını artırabilirsiniz, örneğin CPU çekirdek sayısının 3 katı olarak ayarlayabilirsiniz. Eğer işte bekleme süreleri çok fazlaysa süreç sayısını daha da artırabilirsiniz, mesela CPU çekirdek sayısının 8 katına veya daha fazlasına. Dikkat: engarajlı IO, CPU yoğun bir iş yüküdür ve IO yoğun sınıfına girmez.
-
Eğer CPU yoğun bir iş yükü varsa, yani işte engarajlı IO kullanımı yoksa, örneğin asenkron IO ile ağ kaynaklarını okuma durumunda, süreçler iş kodu tarafından engellenmediği için süreç sayısını CPU çekirdek sayısı ile aynı olarak ayarlayabilirsiniz.
Süreç Sayısı İçin Referans Değerler
Eğer iş kodu IO yoğunluğundaysa, IO yoğunluk derecesine göre süreç sayısını ayarlayın, örneğin CPU çekirdek sayısının 3-8 katı.
Eğer iş kodu CPU yoğunluğundaysa, süreç sayısını CPU çekirdek sayısına ayarlayabilirsiniz.
Dikkat
Workerman’ın kendi IO işlemleri engelleme yapmayan işlemlerdir, örneğin Connection->send gibi işlemler engellemesiz olup, CPU yoğun işlemler kategorisine girer. İş yükünüzün hangi türde olduğunu bilmiyorsanız, süreç sayısını yaklaşık CPU çekirdek sayısının 3 katı olarak ayarlayabilirsiniz. Ayrıca süreç sayısı ne kadar yüksek olursa olsun daha iyi değildir, çok fazla süreç açılması durumunda süreç değiştirme maliyeti artar ve performans üzerinde belirli bir etkisi olur.