تیون کردن tomcat برای افزایش پرفورمنس

برای تیون کردن tomcat چند عملکرد پایه‌ایی وجود داره:

  1. تیون کردن JVM تامکت: انتخاب یک JVM مناسب و مدرن می‌تونه بین ۵ تا ۲۰ درصد بنا به نظر بیشتر بنچ‌مارک ها تغییر روی پرفورمنس ایجاد کنه. برای مثال استفاده از JVM 64bit باعث افزایش فضای heap میشه که خودش دلیلی برای بهتر شدن پرفورنس هست.

  2. انتخاب و استفاده از گاربج کالکتور مناسب با کار: GC مناسب با الگوریتم مناسب کار مد نظر تعریف می‌شه. با انتخاب GC مدرن و مناسب به صورت بهینه‌تری می‌تونیم مموری رو مدیریت کنیم.

  3. برای عمل کردن GC تو یه بازه زمانی مشخص (MaxGCPauseMillis) اپلیکیشن استاپ می‌شه تا مموری آزاد بشه و مجددا به چرخه استفاده برگرده. این بازه زمانی تو JVM باید به صورتی تنظیم شه که باعث کاهش لیتنسی و افزایش توان عملیاتی بشه.

  4. میزان حافظه JVM باید کافی باشه و به درستی مدیریت بشه. کمبود حافظه در heap , non-heap باعث کاهش عملکرد تامکت می‌شه. با مانیتور کردن و تحلیل حافظه می‌توان مقدار درست و بهینه رو پیدا کرد.

  5. برای فهمیدن هر گونه leak باید تک به تک ترد‌ها در JVM به درستی و دقت بررسی بشه. با بررسی بلاک‌های حافظه، ددلاک‌ها و استک تریس آنها می‌توان به مشکلات سطح کد رسید.

  6. زمانی که workload های مختلف به tomcat server وارد می‌شود باید چندین نوع connector در نظر بگیریم تا بار ورودی به سرور تامکت در انواع مختلف باعث کانفلیکت نشه. با تعریف چند کانکتور هر نوع ورک‌لود به یک پورت از سرور تامکت هدایت و پردازش می‌شه. MaxThreads تعداد حداکثر ترد هایی که به صورت هم زمان برای یک کانکتور می‌تونه اجرا شه رو مشخص می‌کنه. این تعداد به نوع و توان سخت‌افزار بستگی دارد. با افزایش توان سخت‌افزار پرفورنتس تامکت هم افزایش پیدا می‌کنه.

  7. انتخاب نوع پروتکل کانکتور ها هم در پرفورمنس تاثیر دارد.

قطعا راه کار های دیگه‌ایی هم وجود داره برای افزایش پرفرمنس اما قبل از هر اقدامی عملکرد های پایه‌ایی باید بررسی بشن.

8 Likes

عالی بود. عاشق این جور مطالبی هستم که همه جایی پیدا نمیشن یا کمتر بهشون اشاره میشه. واقعا این نکات در درجه اول خود شخص رو و بعد تیم رو متمایز میکنه. :ok_hand: