PDA

View Full Version : کرون جاب و فشار روی هاست



masiha68
پنج شنبه 29 خرداد 1393, 19:15 عصر
سلام دوستان
واسه یکی از بخش های سایت یه کرون جاب درست کردم که هر یک مین میاد و یه کاری روی انجام میده . از صبح تا حالا چند بار بهم اخطار دادن که داری زیادی روی هاست فشار میاری
می خوام ببینم راهی هست که فشار رو کمتر کرد . مثلا تعداد اون پیج رو دوتا کرد و دو تا کرون جاب به فاصله ی زمانی دو مین روش گذاشت ؟ یا نه یه کرون جاب ده مین گذاشت و کدها رو گذاشت توی یه حلقه و با sleep زمان رو تنظیم کرد؟
به نظرتون با این کار فشار کم میشه یا همونه ؟

abolfazl-z
پنج شنبه 29 خرداد 1393, 19:56 عصر
واسه یکی از بخش های سایت یه کرون جاب درست کردم که هر یک مین میاد و یه کاری روی انجام میده . از صبح تا حالا چند بار بهم اخطار دادن که داری زیادی روی هاست فشار میاری
من تا به حال با کرون کار نکردم ولی کد هایت حتما پرفرمنس پاینیی داره.

MMSHFE
پنج شنبه 29 خرداد 1393, 20:02 عصر
کدتون رو بگذارین. به خودی خود، اجرای یک اسکریپت در هر یک دقیقه نباید به سرور فشار بیاره. باید ببینیم کدتون و کوئریها بهینه هستن یا نه. اسکریپتتون چقدر طول میکشه و اینجور چیزها. برای مثال اگه اجرای اسکریپتتون 1 دقیقه طول بکشه و هر یک دقیقه هم اجرا بشه، CPU رو کاملاً درگیر میکنید. حالا اگه اسکریپتتون 1 دقیقه و 1 ثانیه (یا بیشتر) طول بکشه، چون هر یک دقیقه یکبار یک پردازش جدید وارد میشه، بعد از مدت کوتاهی با پر شدن حافظه و درگیری 100٪ پردازنده مواجه میشین.

masiha68
پنج شنبه 29 خرداد 1393, 20:12 عصر
والا فعلا هنوز کد اصلی رو نزاشتم ...فقط واسه تست یه تابع ایمیل گذاشتم و با همونم خطا میده
رم سیستم 512 هستش و پردازشش هم 3 هسته ایه
این راه هایی که گفتم به نظرتون میتونه مشکل رو حل کنه
اقای شهرکی اچیکار کنم فرضا کدی که در صورتی که مدت زمان اجرای کد یک دقیقه و نیم شه بازم اجرا بشه ... حتی در صورتی که درخاست دوم هم بیاد و هم زمان هر دو اجرا بشن
چون من واسه سیستم اینو لازم دارم و هر یک دقیقا باید چک بشه ببینه اس ام اس ی واسه ارسال هست یا نه و شایدم توی یک دقیقه چند صد اس ام اس ارسال بشه و البته شایدم نشه ... به نظرتون راه منطقیش چیه

MMSHFE
پنج شنبه 29 خرداد 1393, 20:15 عصر
بنظر من با سامانه پیامک اگه کار میکنید، نیازی نیست اینقدر دردسر بکشین. هرموقع پیامکی برای ارسال ثبت شد، بدین به وب سرویس ارسال پیامک. سرور اونها اختصاصیه و چندین هزار پیامک هم ارسال میکنه و اینطوری سرور شما هم درگیر نیست. لطفاً درمورد سناریوی کارتون بیشتر توضیح بدین تا بتونم راه حل بدم.

masiha68
پنج شنبه 29 خرداد 1393, 20:19 عصر
سناریو کار اینجوریه که یه نرم افزار ثبت اطلاعات شخصی هست که یه قسمتش بخش یاداوری هاست . این بخش میتونه به سایت وصل بشه و یاداوری ها رو بزاره توی سایت و بعد هم وقتی نوبت هر یاداوری شد اون رو براش اس ام اس می کنیم .
تعداد کاربرای نرم افزار چند هزای (شاید بالا 30-40 هزار ) و احتمال داره تعداد یاداوری ها زیاد بشه . البته اینم بگم که کاربر میتونه هر یاد اوری رو ویرایش کنه ...مثلا قبل از ارسال ... شاید دیروز یاداوری رو گذاشته و امروز ده دقیقه قبل از ارسال زمانش رو تغییر میده
اگه توضیحات کافی نیست بگین تابیشتر توضیح بدم

MMSHFE
پنج شنبه 29 خرداد 1393, 20:22 عصر
آهان همون پروژه است که با Yii انجام دادین؟ بهتره یک جدول جدا برای پیامکهای منتظر ارسال بگذارین و وقتی ارسال شد، رکورد رو به جدول دیگری برای پیامکهای ارسال شده منتقل کنید (از این جدول حذف کنید). اینطوری جدول پیامکهای منتظر ارسال شما همیشه سبک باقی میمونه و برای مقاصد آماری هم جدول پیامکهای ارسال شده رو دارین. اگه مشکل در ارسال ایمیل هم هست، بهتره با PHPMailer و اطلاعات SMTP سرور خودتون ارسال کنید.

masiha68
پنج شنبه 29 خرداد 1393, 20:29 عصر
آهان همون پروژه است که با Yii انجام دادین؟ بهتره یک جدول جدا برای پیامکهای منتظر ارسال بگذارین و وقتی ارسال شد، رکورد رو به جدول دیگری برای پیامکهای ارسال شده منتقل کنید (از این جدول حذف کنید). اینطوری جدول پیامکهای منتظر ارسال شما همیشه سبک باقی میمونه و برای مقاصد آماری هم جدول پیامکهای ارسال شده رو دارین. اگه مشکل در ارسال ایمیل هم هست، بهتره با PHPMailer و اطلاعات SMTP سرور خودتون ارسال کنید.
بله همونه
فک نکنم زیاد موثر باشه چون بازم امکانش هست پیامکهای منتظر ارسال زیاد باشن . همین الان با یه تابع ایمیل هاست داره اخطار میده ... البته ایمیل رو فقط واسه تست گذاشتم

masiha68
پنج شنبه 29 خرداد 1393, 20:31 عصر
نظرتون چیه یک دقیقه قبلش بیام چک کنم و پیامکهای روی که قراره دقیقه ی بعد ارسال بشن رو بفرستم به پنل اس ام اس ... دارم کدهای پنل رو بررسی می کنم ببینم همچین امکانی داره

MMSHFE
پنج شنبه 29 خرداد 1393, 20:32 عصر
خوب این سرویسی که شما میخواین ارائه بدین نباید (30 تا 40 هزار کاربر که هرکدوم ممکنه دهها یادآوری ثبت کنن) نباید روی هاست اشتراکی انجام بشه. هر چیزی ابزار خاص خودش رو میخواد. حداقل یک VPS بگیرین. ضمناً تابع mail به خودی خود کنده و برای همین میگم از SMTP سرور استفاده کنید و با PHPMailer کار کنید. البته این سروری که دارین هم در نوع خودش جالبه که با یک تابع mail بهش فشار میاد.

masiha68
پنج شنبه 29 خرداد 1393, 20:34 عصر
هاست ابری گرفتم از پارس پیک و به مرور ارتقاش میدم ... چون هنوز اون نسخه ی که این امکان داره رو داره وارد بازار نشده

MMSHFE
پنج شنبه 29 خرداد 1393, 20:34 عصر
نظرتون چیه یک دقیقه قبلش بیام چک کنم و پیامکهای روی که قراره دقیقه ی بعد ارسال بشن رو بفرستم به پنل اس ام اس ... دارم کدهای پنل رو بررسی می کنم ببینم همچین امکانی داره

پنلهای پیامک خودشون سیستم ارسال زماندار رو هم دارن. البته باید به یک نکته دقت کنید: گفتین ممکنه تا قبل از ارسال، یادآوری رو تغییر بده یا کلاً حذف کنه. اینو میخواین چیکار کنید؟

MMSHFE
پنج شنبه 29 خرداد 1393, 20:37 عصر
هاست ابری گرفتم از پارس پیک و به مرور ارتقاش میدم ... چون هنوز اون نسخه ی که این امکان داره رو داره وارد بازار نشده

تجربه شخصی که من با پارس پک داشتم، بدترین سرویس هاستینگ ایران بود! وقتی پنلتون تمام بشه بدون هشدار قبلی فایلها رو هم پاک میکنن! زنگ زدم گفتم حداقل خبر میدادین قبلش. میگن خودتون باید حواستون باشه ما وقت این کارا رو نداریم!!! بنظر من بهتره از ParsDev.ir یا Bertina.ir و... هاست بگیرین.

masiha68
پنج شنبه 29 خرداد 1393, 20:42 عصر
پنلهای پیامک خودشون سیستم ارسال زماندار رو هم دارن. البته باید به یک نکته دقت کنید: گفتین ممکنه تا قبل از ارسال، یادآوری رو تغییر بده یا کلاً حذف کنه. اینو میخواین چیکار کنید؟
خب احتمال اینکه تو این یک دقیقه کاربر بیاد و زمان رو تغییر بده تقریبا کمه ... یا مثلا کلا نزارم نیم ساعت قبل ارسال اس ام اس زمان رو تغییر بدن یا همچین چیزی
در مورد پارس پیک هم تقریبا راضیم ازشون ولی هرچی می پرسی یه چیز دیگه جواب میدن ...

masiha68
پنج شنبه 29 خرداد 1393, 20:48 عصر
فقط یه سوالم در مورد نحوه ی پرداش مفسر یا همون موتور پی اچ پی داشتم .
فرضا ما یه کلاس داریم که یه مقدار می گیره و یه مقدار دیگه رو میده بیرون .... حالا همزمان دو کاربر میان همون کلاس رو فراخانی می کنن و هر دو همزمان کلاس رو مقدار دهی می کنن ... احتمال داره این دو مقدار قاطی بشه ... البته ظاهرا سوال خیلی ابتداییه ولی میخوام درک کنم که وقتی دو نفر یک کلاس رو فراخانی می کنن سرور واسه هر کدم یه کپی از اون کلاس رو در اختیار قرار میده یا نه واسه هر دو یک کلاس
یه سوال دیگه هم که توی اول بحث پیش اومد اینه که فرضا درخواست های متوالی به یک کلاس اجرا میشه ولی قبل از اینکه درخاست اول تموم بشه درخاست دومم هم میاد ... حالا سیستم چیکار می کنه ... درخاست اول رو ول می کنه و دمی رو اجرا می کنه یا نه دومی رو میزاره تو صف ....

abolfazl-z
پنج شنبه 29 خرداد 1393, 22:27 عصر
به نظر من اگر بتونی برای هر در خواست یک cron job بوسیله api یا ... درست کنی خیلی بهتر باشه و هر زمانی که کاربر یادآور را ویرایش یا حذف کرد شما هم cron job مربوطه را ویرایش یا حذف کنید.

چون در اینصورت خیلی بهتر می باشد تا اینکه شما بیایید هر دقیقه چک کنید !

در آن صورت تمام استفاده های بیهوده از سرور کاسته میشود.

شما فرض کنید 1000 کاربر دارید.

از میان این کاربران فقط کاربر A و B و C یاد اور های خود را به ترتیب برای روز های یک شنبه و دو شنبه و سه شنبه ثبت کرده اند.

خوب امروز هم جمعه هست.

خوب حالا شما فکر کنید از الان هر دقیقه چک کنید بهتر هست یا اینکه هما موقع خود کرون اجرا شود ؟

البته این رو نمیدونم که ساخت تعداد زیادی cron job پرفرمنس رو پایین میاره یا نه ؟

یا اینکه آیا تعداد cron job با توجه به سیستم محدود هست یا خیر ؟

مهندس نظرتون چیه ؟

masiha68
پنج شنبه 29 خرداد 1393, 22:56 عصر
به نظر من اگر بتونی برای هر در خواست یک cron job بوسیله api یا ... درست کنی خیلی بهتر باشه و هر زمانی که کاربر یادآور را ویرایش یا حذف کرد شما هم cron job مربوطه را ویرایش یا حذف کنید.

چون در اینصورت خیلی بهتر می باشد تا اینکه شما بیایید هر دقیقه چک کنید !

در آن صورت تمام استفاده های بیهوده از سرور کاسته میشود.

شما فرض کنید 1000 کاربر دارید.

از میان این کاربران فقط کاربر A و B و C یاد اور های خود را به ترتیب برای روز های یک شنبه و دو شنبه و سه شنبه ثبت کرده اند.

خوب امروز هم جمعه هست.

خوب حالا شما فکر کنید از الان هر دقیقه چک کنید بهتر هست یا اینکه هما موقع خود کرون اجرا شود ؟

البته این رو نمیدونم که ساخت تعداد زیادی cron job پرفرمنس رو پایین میاره یا نه ؟

یا اینکه آیا تعداد cron job با توجه به سیستم محدود هست یا خیر ؟

مهندس نظرتون چیه ؟
جالبه واسه کاربرای کم ... شما فرض کن امروز قراره هزارتا اس ام اس ارسال بشه ... یعنی هزارتا کرون جاب ...و این اصلا جالب نیست

abolfazl-z
پنج شنبه 29 خرداد 1393, 23:04 عصر
جالبه واسه کاربرای کم ... شما فرض کن امروز قراره هزارتا اس ام اس ارسال بشه ... یعنی هزارتا کرون جاب ...و این اصلا جالب نیست

اولا بنده گفتم که اطلاعاتی در مورد پرفرمنس در cron job ندارم !

بر چه اساسی این حرف را میزنید ؟

آیا منبعی برای اثبات حرفتون دارید ؟

اگر دیدن ایجاد تعداد زیادی کرون جاب پرفرمنس رو پایین نمیاره حتما این کار را انجام دهید.

abolfazl-z
پنج شنبه 29 خرداد 1393, 23:27 عصر
یا یک روشی دیگر مثل ایجاد cron job شخصی

فایل را دانلود کنید و مشاهده کنید.

توجه داشته باشید که این فایل تست نشده و هدف از آن فقط رساندن اصل موضوع می باشد.