Indy sunucuları her bağlantı için bir iş parçacığı kullanır; bu, sunucunuzun 1000 eşzamanlı bağlantıyı işlemesi gerekiyorsa 1000 iş parçacığı oluşturacağı anlamına gelir. Ancak 1000 bağlantı yerine 10.000 bağlantı varsa, 10.000 iş parçacığı oluşturur ve böyle devam eder... elbette bu, üstel donanım kaynakları gerektirir ve yüksek yüklü sunucular için kullanılabilir değildir.
Windows, küçük bir iş parçacığı havuzuyla binlerce bağlantının işlenmesine olanak tanıyan IOCP adlı bir API sağlar.
sgcWebSockets 4.3.3 sürümünden itibaren IOCP, Indy Sunucuları tarafından desteklenir:
- TsgcWebSocketServer
- TsgcWebSocketHTTPServer
Yapılandırma
Indy Sunucuları için IOCP'yi etkinleştirmek için, IOHandlerOptions özelliğine gidin ve IOHandler Türü olarak iohIOCP'yi seçin.
Server.IOHandlerOptions.IOHandlerType := iohIOCP; Server.IOHandlerOptions.IOCP.IOCPThreads := 8; Server.IOHandlerOptions.IOCP.WorkOpThreads := 32;
IOCPThreads, IOCP asenkron istekleri (çakışan işlemler) için kullanılan iş parçacıklarıdır ve WorkOpThreads, bu asenkron istekleri işlemek için kullanılan iş parçacıklarıdır (bayt okuma ve yazma). WorkOpThreads'in maksimum değeri 64'tür, ancak bu değeri fiziksel işlemci sayınız * 2'ye göre ayarlamalısınız; bu nedenle 16 işlemcili bir cpu'nuz varsa, WorkOpThreads değerini 32 olarak ayarlayın. windows sunucuları için IOCP'yi etkinleştirmek, binlerce bağlantıyı işlemeniz gerektiğinde önerilir; sunucunuz en fazla yalnızca 100 eşzamanlı bağlantıyı işliyorsa varsayılan Indy İş Parçacığı modeliyle kalabilirsiniz.
