Ana Sayfa

C10K Sorunu: Yıllar Önce Çözüldü, Neden Hala Yeniden Keşfediliyor?

1 dk okuma

2003 yılında yazılan bu makale, web sunucularının aynı anda on binlerce istemciyi (C10K) yönetme yeteneğinin neden o dönemde bile bir zorluk olmaması gerektiğini tartışıyor. Yazar, 1000 MHz işlemci, 2 GB RAM ve 1000 Mbit/sn Ethernet kartı gibi donanımların 1200 dolar civarında bir maliyetle kolayca temin edilebildiğini ve bu konfigürasyonun her bir istemciye saniyede 50 KHz işlem gücü, 100 Kbyte bellek ve 50 Kbit/sn bant genişliği sağlayarak 20.000 istemciyi rahatlıkla kaldırabileceğini belirtiyor. Bu durum, donanımın artık bir darboğaz olmadığını açıkça ortaya koyuyor. Hatta 1999'da cdrom.com gibi yoğun FTP sitelerinin Gigabit Ethernet üzerinden 10.000 istemciye hizmet verdiği örnekler sunuluyor.

Makale, ince istemci (thin client) modelinin yeniden popülerleştiği ve sunucuların binlerce istemciye hizmet verdiği bir dönemde, işletim sistemlerini yapılandırma ve yüksek performanslı kod yazma üzerine ipuçları sunuyor. Özellikle Unix benzeri işletim sistemlerine odaklanılsa da, Windows için de bazı bilgiler veriliyor. Yazar, 2003 Ekim ayında Felix von Leitner'in ağ ölçeklenebilirliği üzerine yaptığı karşılaştırmalı testlere ve W. Richard Stevens'ın "Unix Network Programming" adlı klasik eserine atıfta bulunarak, yüksek performanslı sunucu tasarımında I/O stratejileri ve "thundering herd" gibi sorunlara değiniyor.

Makalede, sunucuların binlerce istemciyi verimli bir şekilde yönetebilmesi için ağ soketlerinin engellemeyen (nonblocking) moda ayarlanması ve select() veya poll() gibi sistem çağrılarının kullanılması gibi popüler teknikler vurgulanıyor. Bu yaklaşımlar, çekirdeğin hangi dosya tanımlayıcısının veri beklediğini bildirmesiyle sunucu uygulamasının aynı anda birden fazla istemciyle etkileşim kurmasını sağlıyor. Makale, bu tekniklerin yıllar önce bilindiğini ve uygulanabilir olduğunu, ancak sektörde sürekli olarak yeniden keşfedildiğini ima ediyor.

İçgörü

Yüksek performanslı ve ölçeklenebilir sunucu mimarilerinin temel prensipleri yıllar önce çözülmüş olmasına rağmen, modern sistemlerde hala benzer zorluklarla karşılaşılması, bu temel bilgilerin sürekli güncel kalmasını gerektiriyor.

Kaynak