Web sunucusu modülüyle PhantomJS'yi eşzamanlı isteklerle çok iş parçacıklı bir şekilde kullanmayla ilgili bir sorun yaşıyorum.
here (ve here kodlu) açıklandığı gibi, sunucu tarafında yüksek stok grafikler oluşturmak için PhantomJS 2.0 kullanıyorum. İyi çalışıyor ve çeşitli boyutlardaki grafikleri test ederken, bir grafik oluşturmak için yaklaşık 0,4 saniyede oldukça tutarlı sonuçlar elde ettim.Yerleşik web sunucusuna sahip PhantomJS yalnızca bir CPU kullanıyor
Bağladığım kod, başlangıçta highcharts ekibi tarafından yayımlandı ve ayrıca, http://export.highcharts.com/ adresindeki dışa aktarma sunucularında da kullanılıyor. Eşzamanlı istekleri destekleyebilmek için, bir dizi PhantomJS işleminin havuzunu tutar ve temel olarak modeli eşzamanlı istek başına bir phantoms örneğidir.
Web sunucusu modülünün en fazla 10 eşzamanlı isteği desteklediğini gördüm (burada açıklanmıştır), bu yüzden havuzumda daha az sayıda PhantomJS işleminin devam ettirilebileceğini düşündüm. Ancak, daha fazla iş parçacığı kullanmayı denediğimde, PhantomJS sadece bir CPU kullanıyormuş gibi lineer bir yavaşlama yaşadım. Bu yavaşlama aşağıdaki gibi gösterilir (tek bir PhantomJS örneği için):
1 istemci iş parçacığı, ortalama istek süresi 0,44 saniye.
2 istemci konuları, ortalama istek süresi 0.76 saniye.
4 istemci konuları, ortalama istek süresi 1,5 saniye.
Bu bilinen bir PhantomJS sınırlaması mı? etrafında yol var mı?
Bazılarını * burada * unuttun bağlantılar. –
Daha ilginç bir soru, neden 1 ila 2 istemciden geçerek çift olmadı ve neden 2 ila 4 müşteriye geçerek iki katına çıktı? –
Neredeyse iki katına çıktı, bence ölçümlerdeki hata payını hesaba katabilirsiniz. – Yoni