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.
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.
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.
TsgcWebSocketServer / TsgcWebSocketHTTPServer — IOHandlerOptions aracılığıyla etkinleştirilir
Linux epoll iş parçacığı havuzu kabul edicisi — yalnızca Linux
Linux
Enterprise
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;
epoll iş parçacığı havuzunun nasıl çalıştığı ve iş yükünüz için nasıl ayarlanacağı.
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.
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.
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.
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.
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.
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.
Bu modun dayandığı mekanizma için yetkili kaynaklar.
Ç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ı. | Aç | |
| Demo Projesi — Demos\Server Çalışmaya hazır örnek proje. sgcWebSockets paketinin içinde gelir. Aşağıdan denemeyi indirin. | Aç | |
| Kullanıcı Kılavuzu (PDF) Kütüphanedeki her bileşeni kapsayan kapsamlı kılavuz. | Aç |