Aws-sdk-net: قضية HTTP SQSclient تحت الحمل الكبير

تم إنشاؤها على ٢٨ أكتوبر ٢٠١٩  ·  4تعليقات  ·  مصدر: aws/aws-sdk-net


يتسبب عميل SQS في استثناءات مأخذ التوصيل تحت الحمل العالي في نواة الشبكة.

سلوك متوقع


يجب أن يكون Sqsclient قادرًا على إدارة عمر عميل http مع التطبيقات.

أعاد استخدام عملاء http ولا يستهلك كل المنافذ. 8124

السلوك الحالي

مصنع Clientconfig httpclient فارغ. لذلك لا يمكن التخلص من عملاء httpclients. يتم زيادة ذاكرة التخزين المؤقت إلى الحد الأقصى.

حل ممكن

    public class SqsHttpClientFactory : Amazon.Runtime.HttpClientFactory
    {
        private readonly IHttpClientFactory _httpClientFactory;

        public SqsHttpClientFactory(IHttpClientFactory httpClientFactory)
        {
            _httpClientFactory = httpClientFactory;
        }

        public override HttpClient CreateHttpClient(IClientConfig clientConfig)
        {
            return _httpClientFactory.CreateClient();
        }
    }
            services.AddAWSService<IAmazonSQS>();
            services.AddSingleton<IAmazonSQS>(x => new AmazonSQSClient(new AmazonSQSConfig
            {
                HttpClientFactory = new SqsHttpClientFactory(x.GetRequiredService<IHttpClientFactory>())
            }));

خطوات إعادة الإنتاج (للحشرات)

إنشاء مجموعة ECS Fargate. قم بتشغيل مهمة حيث تقوم الحاوية بتشغيل تطبيق أساسي .net على نظام التشغيل Linux.

سياق الكلام


تتعارض الخدمات مع الأحمال العالية. لا يدعم اتفاقيات مستوى الخدمة المحددة لـ sqs.

هل أنت متأكد من أن http أفضل بروتوكول للمراسلة؟

بيئتك

  • إصدار AWSSDK.Core المستخدم: الأحدث
    إكس فارجيت عبر حاويات لينكس.

NET Core Info

  • إصدار .NET Core المستخدم للتطوير: 2.2
  • إصدار .NET Core المثبت في البيئة التي يعمل بها التطبيق: 2.2
B bug modulsdk-core

التعليق الأكثر فائدة

لقد تحدثت مع دعم aws من خلال شركتي ، ولن يحلوها ، قبل الميلاد ، هناك حل بديل لذلك.
ما ذكرته أعلاه. SqsHttpClientFactory مع httpclientfactory الأساسية asp.net
الايجابيات: حل المشكلة
سلبيات: حظر العميل غير المتزامن (إذا كنت تريد الاستهلاك والإنتاج) لذلك يمكن أن يكون كل ما هو مصدر الحدث

https://github.com/aws/aws-sdk-net/issues/565

دليل التنفيذ:
https://www.stevejgordon.co.uk/httpclient-connection-pooling-in-dotnet-core

نفس القضايا:
https://github.com/aws/aws-sdk-net/issues/1339
https://github.com/aws/aws-sdk-net/issues/971

ال 4 كومينتر

ما الذي قمت بتعيينه في تكوين العميل حول هذا الموضوع؟ هل CacheHttpClient صحيح؟

نعم أنا أستخدم. net core. أعتقد أن المشكلة قد تكون في الاستهداف. (باستخدام .net standart 1.3 وليس عميل http 2.0)
فئة الملخص العامة HttpClientFactory
{
///


/// إنشاء وتكوين HttpClient.
///

///
الملخص العام HttpClient CreateHttpClient (IClientConfig clientConfig) ؛

/// <summary> /// <para> /// This is a switch used for performance testing and is not intended for production applications /// to change. This switch may be removed in a future version of the SDK as the .NET Core platform matures. /// </para> /// <para> /// If true, the HttpClient is cached and reused for every request made by the service client /// and shared with other service clients. /// </para> /// <para> /// For the .NET Core platform this is default to true because the HttpClient manages the connection /// pool. /// </para> /// </summary> bool CacheHttpClient { get; }

أواجه هذه المسألة أيضا. هل هناك طريقة مقترحة لاستخدام SQSClient دون استهلاك جميع الاتصالات؟

لقد تحدثت مع دعم aws من خلال شركتي ، ولن يحلوها ، قبل الميلاد ، هناك حل بديل لذلك.
ما ذكرته أعلاه. SqsHttpClientFactory مع httpclientfactory الأساسية asp.net
الايجابيات: حل المشكلة
سلبيات: حظر العميل غير المتزامن (إذا كنت تريد الاستهلاك والإنتاج) لذلك يمكن أن يكون كل ما هو مصدر الحدث

https://github.com/aws/aws-sdk-net/issues/565

دليل التنفيذ:
https://www.stevejgordon.co.uk/httpclient-connection-pooling-in-dotnet-core

نفس القضايا:
https://github.com/aws/aws-sdk-net/issues/1339
https://github.com/aws/aws-sdk-net/issues/971

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات