Antipattern: HTTP kalıcı (yeniden kullanılabilir keep-alive) bağlantılarını devre dışı bırakma

Apigee Edge belgelerini görüntülüyorsunuz.
. Git: Apigee X belgeleri.
bilgi

API proxy'si, arka uç hizmetlerine bağlanmak için kullanılan istemci uygulamalarına yönelik bir arayüzdür. Apigee Edge, arka uç hizmetlerine API proxy'si üzerinden bağlanmanın çeşitli yollarını sunar:

Kalıcı Bağlantılar

HTTP kalıcı bağlantı, HTTP Keep-alive veya HTTP bağlantısının yeniden kullanımı olarak da bilinen, tek bir TCP bağlantısı birden fazla HTTP isteği/yanıtı alabilir, her istek/yanıt çifti için yeni bir bağlantı açmak yerine.

Apigee Edge, arka uç hizmetleriyle iletişim kurmak için kalıcı bağlantı kullanır. Bağlantı durur varsayılan olarak 60 saniye boyunca yayında kalır. Yani bağlantı havuzunda bir bağlantı, 60 saniyeden fazla sürerse bağlantı kapanır.

Canlı tutma zaman aşımı süresi, keepalive.timeout.millis adlı bir özellik aracılığıyla yapılandırılabilir. API proxy'sinin TargetEndpoint yapılandırmasında belirtilir. Örneğin, canlı tutma süre, TargetEndpoint'te belirli bir arka uç hizmeti için 30 saniye olarak belirlenebilir.

Aşağıdaki örnekte keepalive.timeout.millis, TargetEndpoint öğesinde 30 saniye olarak ayarlanmıştır yapılandırma:

<!-- /antipatterns/examples/disable-persistent-connections-1.xml -->
<TargetEndpoint name="default">
  <HTTPTargetConnection>
    <URL>http://mocktarget.apigee.net</URL>
    <Properties>
      <Property name="keepalive.timeout.millis">30000</Property>
    </Properties>
  </HTTPTargetConnection>Disable HTTP persistent (Reusable keep-alive) connections
</TargetEndpoint>

Yukarıdaki örnekte keepalive.timeout.millis, bir kullanıcı için canlı tutma davranışını kontrol eder. API proxy'sinde belirli bir arka uç hizmetine erişebilir. Ayrıca canlı tutma davranışını kontrol eden bir mülk de vardır. tüm proxy'lerdeki arka uç hizmetleri için geçerlidir. HTTPTransport.keepalive.timeout.millis İleti İşleyici bileşeninde yapılandırılabilir. Bu özelliğin varsayılan değeri de 60'tır. saniye. Bu mülkte herhangi bir değişiklik yapmak, Apigee Edge'e ve tüm API proxy'lerinde tüm arka uç hizmetlerine erişebilirsiniz.

Antipattern

keepalive.timeout.millis özelliğini ayarlayarak kalıcı (canlı tut) bağlantıları devre dışı bırakma değerini 0 olarak ayarlayın veya Mesaj İşleyicilerde HTTPTransport.keepalive.timeout.millis değerinin 0 olması performansı etkileyecektir.

Aşağıdaki örnekte, TargetEndpoint yapılandırması kalıcı (Keep alive) bağlantıları devre dışı bırakıyor belirli bir arka uç hizmeti için keepalive.timeout.millis değerini 0 değerine ayarlayın:

<!-- /antipatterns/examples/disable-persistent-connections-2.xml -->
<TargetEndpoint name="default">
  <HTTPTargetConnection>
    <URL>http://mocktarget.apigee.net</URL>
    <Properties>
      <Property name="keepalive.timeout.millis">0</Property>
     </Properties>
  </HTTPTargetConnection>
</TargetEndpoint>

Bir veya daha fazla arka uç hizmeti için "canlı bağlantılar" devre dışı bırakılırsa Edge'in hedef arka uç hizmetlerine yapılan her yeni istek için yeni bağlantı. Arka uç HTTPs ise Ayrıca Edge her yeni istek için SSL anlaşması yaparak API isteklerinin gecikmesi.

Etki

  • Apigee Edge'in yeni bir bağlantı açması ve bu nedenle API isteklerinin genel yanıt süresini uzatır Her yeni istek için SSL el sıkışma işlemi gerçekleştirme.
  • Bağlantıların serbest bırakılması biraz zaman aldığı için yüksek trafik koşullarında bağlantılar tükenebilir geri yükleyebilirsiniz.

En İyi Uygulama

  • Arka uç hizmetleri, HTTP kalıcı bağlantısını HTTP 1.1'e uygun olarak kabul etmeli ve işlemelidir. yardımcı olur.
  • Arka uç hizmetleri, mümkünse bir Connection:keep-alive başlığıyla yanıt vermelidir. kullanmaya devam edebilirsiniz.
  • Arka uç hizmetleri şu durumlarda Connection:close başlığıyla yanıt verir: nasıl kullanacağınızı göstereceğim.

Bu kalıbı uygulamak, Apigee Edge'in kalıcı veya kalıcı olmayan öğeleri otomatik olarak işlemesini sağlar. API proxy'sinde değişiklik gerektirmeden arka uç hizmetleriyle bağlantı kurma.

Daha fazla bilgi