"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > تحسين أداء تطبيقات Spring Boot - الجزء الأول

تحسين أداء تطبيقات Spring Boot - الجزء الأول

تم النشر بتاريخ 2024-09-13
تصفح:728

Melhorando o desempenho de aplicações Spring Boot - Parte I

عند بدء تشغيل تطبيقات Spring Boot، نستخدم عادةً الإعدادات الافتراضية التي يوفرها المبتدئون، وهو ما يكفي لمعظم الحالات. ومع ذلك، إذا كنا بحاجة إلى الأداء، فهناك تعديلات محددة يمكن إجراؤها، كما سيتم توضيحه في الجزء الأول من هذه المقالة.

استبدال Tomcat بحاوية servlet أخرى

تطبيقات الويب، RESTFul، التي تستخدم Spring MVC، تضيف بشكل عام تبعية الويب Spring-boot-starter، والتي تستخدم Tomcat كخادم افتراضيًا الويب. ومع ذلك، هناك بدائل أكثر إثارة للاهتمام، مثل Undertow، وهو خادم web عالي الأداء، مع بنية غير متزامنة وغير قابلة للحظر، مما يسمح له بالتعامل مع عدد كبير من الاتصالات المتزامنة بكفاءة، مما يجعلها مناسبة للتطبيقات عالية الأداء. نحن لا نقول أن Tomcat سيء، لكن يمكننا أن نمنح Undertow.

فرصة.

إضافة الجزء السفلي إلى الربيع

لكي نتمكن من استخدام Undertow كخادم web، نحتاج إلى تجاهل تبعية Spring-boot-starter-tomcat التي يضيفها Spring-boot-starter-web بالفعل ثم أضف Spring-boot-starter-undertow.

استخدام pom.xml:

org.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-starter-tomcatorg.springframework.bootspring-boot-starter-undertow

استخدام build.gradle:

dependencies {
    implementation('org.springframework.boot:spring-boot-starter-web') {
        exclude group: 'org.springframework.boot', module: 'spring-boot-starter-tomcat'
    }
    implementation 'org.springframework.boot:spring-boot-starter-undertow'
}

تكوين تحت

من خلال application.properties أو application.yml، يمكننا تكوين عدد سلاسل الإدخال والإخراج وعدد سلاسل العمليات التي نريد أن يستخدمها الخادم.

استخدام application.yml

server:
  undertow:
    threads:
      io: 4
      worker: 64

استخدام application.properties

server.undertow.threads.io=4
server.undertow.threads.worker=64

I/O تؤدي الخيوط عمليات غير محظورة ويجب ألا تقوم مطلقًا بعمليات حظر، لأنها مسؤولة عن الاستماع إلى الاتصالات التي تصل إلى التطبيق، ثم إرسالها إلى قائمة انتظار المعالجة. القيمة المشتركة هي خيطي إدخال/إخراج لكل نواة وحدة المعالجة المركزية.

تنفذ سلاسل العمليات العاملة عمليات الحظر، مثل طلبات Servlet التي تم إرسالها إلى قائمة انتظار المعالجة بواسطة الإدخال / الإخراج الخيوط . تعتمد القيمة المثالية على حجم العمل، ولكن يوصى عمومًا بتكوين حوالي 10 سلاسل لكل نواة وحدة المعالجة المركزية.

للحصول على معلومات أكثر تفصيلاً والمزيد من الخيارات التي يمكن استكشافها، ما عليك سوى الانتقال إلى وثائق Undertow.

ضغط استجابات HTTP

ضغط البيانات هو ميزة تهدف إلى تقليل حجم نص استجابات HTTP، والتي بدورها يمكن أن تحسن أداء تطبيقنا عن طريق تقليل كمية البيانات المنقولة عبر الشبكة.

يعد تكوين ضغط البيانات في Spring Boot مهمة تافهة، لأنه يدعم هذه الوظيفة.

استخدام application.yml

server:
  compression:
    enabled: true
    mime-types: text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json
    min-response-size: 1024

استخدام application.properties

server.compression.enabled=true
server.compression.mime-types=text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json
server.compression.min-response-size=1024

server.compression.enabled: تمكين/تعطيل الضغط.
server.compression.mime-types: قائمة بأنواع MIME التي يجب ضغطها.
server.compression.min-response-size: الحد الأدنى لحجم "Content-Length" الضروري لإجراء الضغط.

وبهذا نغلق الجزء الأول من المقال. في الجزء التالي، سنتعلم المزيد عن Hikari وJPA وHibernate وسنتعلم كيفية تكوينها، من أجل تحسين أداء تطبيقات Spring Boot.

بيان الافراج تم إعادة نشر هذه المقالة على: https://dev.to/mathstylish/melhorando-a-performance-de-aplicacoes-spring-boot-parte-i-58jl?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3