EPOLL Sunucusu

Yüksek eşzamanlılık için bir Linux epoll kabul edicisi. Indy'nin varsayılan olarak yaptığı gibi bağlantı başına bir iş parçacığı yerine sınırlı bir iş parçacığı havuzu kullanarak sgcWebSockets sunucusunda binlerce bağlantıyı yönetin.

EPOLL I/O Handler

Linux'ta Indy tabanlı sunucular için yüksek performanslı bir G/Ç modu. Standart sunucuda IOHandlerOptions özelliği aracılığıyla epoll'u etkinleştirin ve bağlantı-başına-tek-iş-parçacığı modelinin çok ötesine ölçeklendirin.

Bileşen sınıfı

TsgcWebSocketServer / TsgcWebSocketHTTPServerIOHandlerOptions aracılığıyla etkinleştirilir

Mekanizma

Linux epoll iş parçacığı havuzu kabul edicisi — yalnızca Linux

Platformlar

Linux

Sürüm

Enterprise

IOHandler türünü ayarlayın, başlayın

Varsayılan iş parçacığı modelinden epoll iş parçacığı havuzuna geçmek için bir Indy sunucusunun IOHandlerOptions özelliğinde iohEPOLL'u seçin.

Server.IOHandlerOptions.IOHandlerType := iohEPOLL;
Server.IOHandlerOptions.EPOLL.EPOLLThreads := 0;
Server.IOHandlerOptions.EPOLL.WorkOpThreads := 0;
Server->IOHandlerOptions->IOHandlerType = iohEPOLL;
Server->IOHandlerOptions->EPOLL->EPOLLThreads = 0;
Server->IOHandlerOptions->EPOLL->WorkOpThreads = 0;
Server.IOHandlerOptions.IOHandlerType = iohEPOLL;
Server.IOHandlerOptions.EPOLL.EPOLLThreads = 0;
Server.IOHandlerOptions.EPOLL.WorkOpThreads = 0;

İçinde neler var

epoll iş parçacığı havuzunun nasıl çalıştığı ve iş yükünüz için nasıl ayarlanacağı.

İş parçacığı havuzu G/Ç

Bağlantı başına bir iş parçacığı yerine sınırlı bir iş parçacığı havuzu kullanarak binlerce bağlantıyı yönetin. Asenkron (overlapped) istekler, her sokete bir iş parçacığı adamak yerine havuza dağıtılır.

EPOLLThreads

EPOLL asenkron istekleri için kullanılan iş parçacıkları. Varsayılan değer 0, sayının işlemci sayısından hesaplandığı anlamına gelir. Delphi 7 ve 2007'de cpucount desteklenmediğinden varsayılan değer 32'dir. Gerektiğinde manuel olarak ayarlayın.

WorkOpThreads

Varsayılan olarak bir bağlantı için her istek farklı bir havuz iş parçacığında çalışabilir. Her bağlantıyı aynı iş parçacığına sabitlemek için WorkOpThreads ayarlayın. Bu performansı etkiler, dolayısıyla bu özelliğe yalnızca ihtiyacınız olduğunda sıfırdan büyük bir değer ayarlayın.

Ne zaman kullanılmalı

Binlerce bağlantıyı yönetmeniz gerektiğinde önerilir. Sunucunuz en fazla yaklaşık 100 eşzamanlı bağlantıyı yönetiyorsa, varsayılan Indy iş parçacığı modelinde kalabilirsiniz.

Bağlantı kesme tespiti

EPOLL, ölü bir soketi yalnızca yazma sırasında tespit eder. OnDisconnect olayını tetiklemek için TsgcWebSocketClient üzerinde CleanDisconnect := True'yu etkinleştirin veya istemcileri periyodik olarak pingleyen sunucu tarafı bir heartbeat'i etkinleştirin.

Linux bağlantı sınırı

Eşzamanlı açık bağlantı sayısını artırmak için açık dosya tanıtıcısı üst sınırını yükseltin. ulimit -n 10000, açık dosya tanıtıcılarının maksimum sayısını 10000'e ayarlar.

Spesifikasyonlar ve referanslar

Bu modun dayandığı mekanizma için yetkili kaynaklar.

Belgeler ve Demolar

Çevrimiçi yardıma doğrudan bağlanın, çalışmaya hazır demo projesini alın ve tam kılavuzu okuyun.

Çevrimiçi Yardım — EPOLL Delphi, C++ Builder ve .NET için kod örnekleriyle tam özellik referansı.
Demo Projesi — Demos\Server Çalışmaya hazır örnek proje. sgcWebSockets paketinin içinde gelir. Aşağıdan denemeyi indirin.
Kullanıcı Kılavuzu (PDF) Kütüphanedeki her bileşeni kapsayan kapsamlı kılavuz.

Linux'ta Binlerce Bağlantıya Ölçeklendirin

Ücretsiz denemeyi indirin ve Delphi sunucunuzu Linux epoll iş parçacığı havuzuna geçirin.