Taşıma Kotaları
Aktarım kotaları, bir bağlantının ne zaman aşırı kaynak tükettiğine karar vermek için kullanılan bir ilke mekanizmasıdır. Kota, kota değeri aşıldığında ek kaynakların kullanılmasını engelleyen sabit bir sınırdır. Aktarım kotaları kötü amaçlı veya kasıtsız hizmet reddi saldırılarını önler.
Windows Communication Foundation (WCF) aktarımları, kaynakların önemli bir şekilde ayrılmasına dayalı varsayılan kota değerlerine sahiptir. Bu varsayılan değerler geliştirme ortamları ve küçük yükleme senaryoları için uygundur. Bir yüklemenin kaynakları tükeniyorsa veya ek kaynakların kullanılabilir olmasına rağmen bağlantılar sınırlıysa hizmet yöneticileri aktarım kotalarını gözden geçirmeli ve tek tek kota değerlerini ayarlamalıdır.
Taşıma Kotası Türleri
WCF aktarımlarının üç tür kotası vardır:
Zaman aşımları, kaynakları uzun süre bağlamaya dayanan hizmet reddi saldırılarını azaltır.
Bellek ayırma sınırları , tek bir bağlantının sistem belleğini tüketmesini ve hizmeti diğer bağlantılara reddetmesini engeller.
Koleksiyon boyutu sınırları , dolaylı olarak bellek ayıran veya sınırlı miktarda kaynak tüketen kaynaklara bağlıdır.
Aktarım Kotası Açıklamaları
Bu bölümde, standart WCF aktarımları için kullanılabilen aktarım kotaları açıklanmaktadır: HTTP(S), TCP/IP ve adlandırılmış kanallar. Özel aktarımlar, bu listeye dahil olmayan kendi yapılandırılabilir kotalarını kullanıma açabilir. Kotaları hakkında bilgi edinmek için özel aktarım belgelerine bakın.
Her kota ayarı bir türe, en düşük değere ve varsayılan değere sahiptir. Kotanın en yüksek değeri türüyle sınırlıdır. Makine sınırlamaları nedeniyle, kotayı maksimum değerine ayarlamak her zaman mümkün değildir.
Adı | Tip | Min. değer |
Varsayılan değer |
Açıklama |
---|---|---|---|---|
ChannelInitializationTimeout |
TimeSpan | 1 onay işareti | 5 sn | İlk okuma sırasında bağlantının ön derlemeyi göndermesini bekleme süresi üst sınırı. Bu veriler kimlik doğrulaması gerçekleşmeden önce alınır. Bu ayar genellikle kota değerinden ReceiveTimeout çok daha küçüktür. |
CloseTimeout |
TimeSpan | 0 | 1 dk | Aktarım özel durum oluşturmadan önce bağlantının kapatılmasını bekleme süresi üst sınırı. |
ConnectionBufferSize |
Tamsayı | 1 | 8 KB | Temel alınan aktarımın aktarım ve alma arabelleklerinin bayt cinsinden boyutu. Arabellek boyutunu artırmak, büyük iletiler gönderirken aktarım hızını artırabilir. |
IdleTimeout |
TimeSpan | 0 | 2 dak | Havuza alınan bir bağlantının kapatılmadan önce boşta kalabileceği maksimum süre. Bu ayar yalnızca havuza alınan bağlantılar için geçerlidir. |
LeaseTimeout |
TimeSpan | 0 | 5 dk | Etkin havuza alınan bağlantının maksimum ömrü. Belirtilen süre geçtikten sonra, geçerli istek karşılandıktan sonra bağlantı kapatılır. Bu ayar yalnızca havuza alınan bağlantılar için geçerlidir. |
ListenBacklog |
Tamsayı | 1 | 10 | Bu uç noktaya yönelik ek bağlantılar reddedilmeden önce dinleyicinin hizmet dışı durumdan çıkarabileceği en fazla bağlantı sayısı. |
MaxBufferPoolSize |
Uzun | 0 | 512 KB | Taşımanın havuza yeniden kullanılabilir ileti arabelleklerine ayırdığı bayt cinsinden en fazla bellek. Havuz bir ileti arabelleği sağlayamadığında, geçici kullanım için yeni bir arabellek ayrılır. Birçok kanal fabrikası veya dinleyicisi oluşturan yüklemeler arabellek havuzları için büyük miktarda bellek ayırabilir. Bu arabellek boyutunun azaltılması, bu senaryoda bellek kullanımını büyük ölçüde azaltabilir. |
MaxBufferSize |
Tamsayı | 1 | 64 KB | Akış verileri için kullanılan bir arabelleğin bayt cinsinden en büyük boyutu. Bu aktarım kotası ayarlanmadıysa veya aktarım akış kullanmıyorsa, kota değeri ve kota değerinin MaxValueküçük olmasıyla MaxReceivedMessageSize aynıdır. |
MaxOutboundConnectionsPerEndpoint |
Tamsayı | 1 | 10 | Belirli bir uç noktayla ilişkilendirilebilen en fazla giden bağlantı sayısı. Bu ayar yalnızca havuza alınan bağlantılar için geçerlidir. |
MaxOutputDelay |
TimeSpan | 0 | 200 ms | Tek bir işlemde ek iletilerin toplu işlenmesi için bir gönderme işleminden sonra beklenmesi gereken en uzun süre. Temel alınan aktarımın arabelleği dolarsa iletiler daha önce gönderilir. Ek ileti göndermek gecikme süresini sıfırlamaz. |
MaxPendingAccepts |
Tamsayı | 1 | 1 | Dinleyicinin beklediği kanallar için en fazla kabul sayısı. Kabul işleminin tamamlanması ile yeni kabul işleminin başlatılması arasında bir zaman aralığı vardır. Bu koleksiyon boyutunun artırılması, bu aralıkta bağlanan istemcilerin bırakılmasına engel olabilir. |
MaxPendingConnections |
Tamsayı | 1 | 10 | Dinleyicinin uygulama tarafından kabul edilmeyi bekleyebileceği en fazla bağlantı sayısı. Bu kota değeri aşıldığında, kabul edilmeyi beklemek yerine yeni gelen bağlantılar bırakılır. İleti güvenliği gibi Bağlan özellikleri istemcinin birden fazla bağlantı açmasına neden olabilir. Hizmet yöneticileri bu kota değerini ayarlarken bu ek bağlantıları hesaba katmalıdır. |
MaxReceivedMessageSize |
Uzun | 1 | 64 KB | Aktarım özel durum oluşturmadan önce alınan iletinin üst bilgiler de dahil olmak üzere bayt cinsinden boyut üst sınırı. |
OpenTimeout |
TimeSpan | 0 | 1 dk | Aktarım özel durum oluşturmadan önce bağlantı kurulmasını bekleme süresi üst sınırı. |
ReceiveTimeout |
TimeSpan | 0 | 10 dk | Aktarım özel durum oluşturmadan önce okuma işleminin tamamlanmasını bekleme süresi üst sınırı. |
SendTimeout |
Timespan | 0 | 1 dk | Aktarım özel durum oluşturmadan önce yazma işleminin tamamlanmasını bekleme süresi üst sınırı. |
ve aktarım kotaları MaxPendingConnections
MaxOutboundConnectionsPerEndpoint
, bağlama veya yapılandırma aracılığıyla ayarlandığında çağrılan MaxConnections
tek bir aktarım kotası içinde birleştirilir. Yalnızca bağlama öğesi bu kota değerlerini ayrı ayrı ayarlamaya izin verir. Aktarım kotası MaxConnections
aynı minimum ve varsayılan değerlere sahiptir.
Aktarım Kotalarını Ayarlama
Aktarım kotaları aktarım bağlama öğesi, aktarım bağlaması, uygulama yapılandırması veya konak ilkesi aracılığıyla ayarlanır. Bu belge, konak ilkesi aracılığıyla aktarımları ayarlamayı kapsamaz. Konak ilkesi kotalarının ayarlarını bulmak için temel alınan aktarım belgelerine bakın. HTTP ve HTTPS Yapılandırma konusu, Http.sys sürücüsünün kota ayarlarını açıklar. HTTP, TCP/IP ve adlandırılmış kanal bağlantılarında Windows sınırlarını yapılandırma hakkında daha fazla bilgi için Microsoft Bilgi Bankası'nda arama yapın.
Diğer kota türleri taşımalara dolaylı olarak uygulanır. Aktarım tarafından bir iletiyi baytlara dönüştürmek için kullanılan ileti kodlayıcının kendi kota ayarları olabilir. Ancak, bu kotalar kullanılan taşıma türünden bağımsızdır.
Bağlama Öğesinden Aktarım Kotalarını Denetleme
Bağlama öğesi aracılığıyla aktarım kotalarının ayarlanması, taşımanın davranışını denetlemede en büyük esnekliği sunar. Kapat, Aç, Al ve Gönder işlemleri için varsayılan zaman aşımları, bir kanal oluşturulduğunda bağlamadan alınır.
Veri Akışı Adı | HTTP | TCP/IP | Adlandırılmış kanal |
---|---|---|---|
ChannelInitializationTimeout |
X | X | |
CloseTimeout |
|||
ConnectionBufferSize |
X | X | |
IdleTimeout |
X | X | |
LeaseTimeout |
X | ||
ListenBacklog |
X | ||
MaxBufferPoolSize |
X | X | X |
MaxBufferSize |
X | X | X |
MaxOutboundConnectionsPerEndpoint |
X | X | |
MaxOutputDelay |
X | X | |
MaxPendingAccepts |
X | X | |
MaxPendingConnections |
X | X | |
MaxReceivedMessageSize |
X | X | X |
OpenTimeout |
|||
ReceiveTimeout |
|||
SendTimeout |
Bağlamadan Aktarım Kotalarını Denetleme
Bağlama aracılığıyla aktarım kotalarının ayarlanması, en yaygın kota değerlerine erişim izni verirken aralarından seçim yapabileceğiniz basitleştirilmiş bir kota kümesi sunar.
Veri Akışı Adı | HTTP | TCP/IP | Adlandırılmış kanal |
---|---|---|---|
ChannelInitializationTimeout |
|||
CloseTimeout |
X | X | X |
ConnectionBufferSize |
|||
IdleTimeout |
|||
LeaseTimeout |
|||
ListenBacklog |
X | ||
MaxBufferPoolSize |
X | X | X |
MaxBufferSize |
1 | X | X |
MaxOutboundConnectionsPerEndpoint |
2 | 2 | |
MaxOutputDelay |
|||
MaxPendingAccepts |
|||
MaxPendingConnections |
2 | 2 | |
MaxReceivedMessageSize |
X | X | X |
OpenTimeout |
X | X | X |
ReceiveTimeout |
X | X | X |
SendTimeout |
X | X | X |
Aktarım
MaxBufferSize
kotası yalnızca bağlamadaBasicHttp
kullanılabilir.WSHttp
Bağlamalar, akışlı aktarım modlarını desteklemeyen senaryolara yöneliktir.Aktarım kotaları
MaxPendingConnections
veMaxOutboundConnectionsPerEndpoint
adlıMaxConnections
tek bir aktarım kotası içinde birleştirilir.
Yapılandırmadan Aktarım Kotalarını Denetleme
Uygulama yapılandırması, bağlamadaki özelliklere doğrudan erişirken aynı aktarım kotalarını ayarlayabilir. Yapılandırma dosyalarında aktarım kotasının adı her zaman küçük harfle başlar. Örneğin, bağlamadaki CloseTimeout
özelliği yapılandırmadaki ayara closeTimeout
, bağlamadaki MaxConnections
özellik de yapılandırmadaki maxConnections
ayara karşılık gelir.