ویرگول
ورودثبت نام
سعید نیب
سعید نیب
سعید نیب
سعید نیب
خواندن ۲ دقیقه·۱۰ ماه پیش

نحوه سرویس دهی postgres و بهبود آن با pgbouncer

نحوه سرویس دهی postgres از نظر کارکرد به صورت client/server است.

کلاینت همان ابزاری است مثل navicat / pgadmin / psql / java که درخواستی را جهت دریافت یا تغیرر به سمت اطلاعات به سمت postgres می فرستد. server نیز همان موتور پایگاه داده است که وظیفه مدیریت اطلاعات و جواب دادن به درخواست های کلاینت ها را دارد(request).

هرگاه درخواستی از یک کلاینت به سمت سرور می آید در سرور یک process(شامل منابعی مثل ram / cpu / .... می باشد)به request اختصاص داده می شود یعنی اگر یک کلاینت ۷ تا درخواست بفرستد باید ۷ تا process در سرور برای آن ایجاد شود این مفهوم client/server است .

یک از مشکلات روش client/server همانطور که در بالا گفته شد ایجاد یک process در ازای هر درخواست است که این موضوع باعث مصرف بیش از حد منابع و در اصطلاح در سرور ایجاد سربار یا overhead می کند. با افزایش تعداد کاربران باید منابع نیز به اندازی کاربران افزایش یابد؛ برای رفع این مشکل نیاز به یک ابزار میانی جهت مدیریت requestها است.

مهمتری ابزاری که می توان در این زمینه نام برد PGBouncer است.


نحوه عملکرد pgbouncer به این شکل است که به جاس ارسال مستقیم به سرور ابتدا request به pgbouncer ارسال می شود بعد درخواست ها با توجه به حجم هر صف در صف های جداگانه ای قرار می گیرند که در اصطلاح به آن ها pool می گویند بعد poolها درخواست ها را یکی یکی به سمت سرور ارسال می کنند. در عکس بالا ۳ کلاینت وجود دارد که هر کدام ۳ درخواست به سمت pgbouncer ارسال می کنند در pgbouncer درخواست ها در pool قرار می گیرند که در اینجا ما ۲ عدد pool داریم و در آخر به سمت سرور ارسال می شود.

با این روش به جای اینکه ۹ process در سرور ایجاد شود ۲ process در سرور ایجاد می شود و منابع کمتری تخصیص می یابد.

سمت سرورperformance
۰
۰
سعید نیب
سعید نیب
شاید از این پست‌ها خوشتان بیاید