PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : حافظه اختصاص داده شده به php mysql apache چگونه تخصیص داده میشود.



abc500x500
August 22nd, 2017, 23:39
درود بر اساتید گرامی
می خواستم راهنمایی کنید که در تنظیمات php وmysql حافظه اختصاص داده شده چگونه بکار گرفته میشود.
مثلا در پلسک هنگام تنظیم پی اچ پی یک پلن
فرض کنید php memory limit برابر ۶۴مگابایت باشد و ۱۰ اکانت هاست باشد و هر اکانت ۲ وردپرس نصب و هر وردپرس ۷ ویزیتور همزمان دارد.
حافظه اشغال شده سیستم کدام گزینه زیر خواهد بود:
۶۴*۱۰*۲*۷=۸۹۶۰ مگابایت
۶۴*۱۰*۲=۱۲۸۰ مگابایت
۶۴*۱۰=۶۴۰ مگابایت
با تشکر
همچنین در مورد mysql

T.Toosi
August 23rd, 2017, 00:25
باسلام، شما همیشه حداکثر مصرف را حساب کنید، اگر 10 تا اکانت باشد که بروی 64 مگ محدود باشند حداکثر 640 مگابایت میتوانند مصرف کنند، اگر دقیق ـتر بخواهید حساب کنید باید مصرف real usage و internal usage را در نظر بگیرید (محسابه مقدار مصرف واقعی اپلیکیشن از مموری در مقابل مصرف کل که شامل سیستم عامل هم می شود) که internal usage هر اسکریپت را میتوانید با متد memory_get_usage محاسبه کنید.

abc500x500
August 23rd, 2017, 12:02
باسلام، شما همیشه حداکثر مصرف را حساب کنید، اگر 10 تا اکانت باشد که بروی 64 مگ محدود باشند حداکثر 640 مگابایت میتوانند مصرف کنند، اگر دقیق ـتر بخواهید حساب کنید باید مصرف real usage و internal usage را در نظر بگیرید (محسابه مقدار مصرف واقعی اپلیکیشن از مموری در مقابل مصرف کل که شامل سیستم عامل هم می شود) که internal usage هر اسکریپت را میتوانید با متد memory_get_usage محاسبه کنید.

مرسی پاسخ دادید
در پلسک یکی می توان php.ini اصلی را ویرایش کرد و دیگر آنکه هر پلن فروش را که ایجاد می کنیم برای آن پلن اختصاصی پی اچ پی را تنظیم می کنیم در هنگام تعیین حافظه در php.ini برای هرپلن می بینیم در کنار باکس نوشته per script آیا در این صورت در مثالی که زدم گزینه اول درست خواهد بود یا دوم یاسوم؟
گزینه اول کاهش و افزایش ویزیتور موثر است ۷ویزیتور*۲ورد پرس*۱۰ اکانت *۶۴مگ=۸۹۶۰مگابایت
گزینه دوم افزایش تعداد ویزیتور تاثیری بر رم ندارد و فقط تعداد اسکریپت مهم است ۲ورد پرس*۱۰ اکانت*۶۴مگ=۱۲۸۰مگابایت
گزینه سوم تعداد اسکریپت فعال تاثیری ندارد وفقط هر اکانت رم مصرفی دارد ۱۰اکانت*۶۴مگ=۶۴۰ مگابایت

T.Toosi
August 23rd, 2017, 14:11
مرسی پاسخ دادید
در پلسک یکی می توان php.ini اصلی را ویرایش کرد و دیگر آنکه هر پلن فروش را که ایجاد می کنیم برای آن پلن اختصاصی پی اچ پی را تنظیم می کنیم در هنگام تعیین حافظه در php.ini برای هرپلن می بینیم در کنار باکس نوشته per script آیا در این صورت در مثالی که زدم گزینه اول درست خواهد بود یا دوم یاسوم؟
گزینه اول کاهش و افزایش ویزیتور موثر است ۷ویزیتور*۲ورد پرس*۱۰ اکانت *۶۴مگ=۸۹۶۰مگابایت
گزینه دوم افزایش تعداد ویزیتور تاثیری بر رم ندارد و فقط تعداد اسکریپت مهم است ۲ورد پرس*۱۰ اکانت*۶۴مگ=۱۲۸۰مگابایت
گزینه سوم تعداد اسکریپت فعال تاثیری ندارد وفقط هر اکانت رم مصرفی دارد ۱۰اکانت*۶۴مگ=۶۴۰ مگابایت

رابطه اول شما درست است تعداد بازدید رابطه مستقیم در مصرف مموری دارد، اما نکته ای که است الان تمامی هندلر های php پس اتمام مموری را آزاد میکنند و در مثال بالا زمانی 8960 مگابایت مصرف خواهد شد که در یک میکروثانیه همزمان 7 تا ویزیتور در 10 تا اکانت سایت را باز کنند، فکر کنم شما دارید برای وردپرس مموری لیمیت میکنید چون وردپرس 40 تا 64 مگ مصرف دارد اما چون دقیق دارید لیمیت میکنید پشنهاد میکنم کمی بیشتر از 64 مگ برای هر وردپرس در نظر بگیرید تا کاربر ها به مشکل نخورند.

abc500x500
August 23rd, 2017, 21:35
رابطه اول شما درست است تعداد بازدید رابطه مستقیم در مصرف مموری دارد، اما نکته ای که است الان تمامی هندلر های php پس اتمام مموری را آزاد میکنند و در مثال بالا زمانی 8960 مگابایت مصرف خواهد شد که در یک میکروثانیه همزمان 7 تا ویزیتور در 10 تا اکانت سایت را باز کنند، فکر کنم شما دارید برای وردپرس مموری لیمیت میکنید چون وردپرس 40 تا 64 مگ مصرف دارد اما چون دقیق دارید لیمیت میکنید پشنهاد میکنم کمی بیشتر از 64 مگ برای هر وردپرس در نظر بگیرید تا کاربر ها به مشکل نخورند.

در مورد میکرو ثانیه آیا وجود تایم اوت برای اسکریپت که مثلا ۳۰ ثانیه است، آیا تداخل رم یوزیج چند کاربر اتفاق نمی افتد؟

abc500x500
August 24th, 2017, 13:36
این سه حالت را حتی در فرومهای خارجی پرسیدم کسی پاسخی نداد. باز دست شما درد نکنه پاسخی دادید.
برای من مسئله شده
وقتی در php مموری لیمیت را مثلا 64 مگ تعیین میکنیم. چند حالت دارد که معلوم نیست کدوم از این سه حالت است.

آیا این به این معنی است که مثلا 10 اکانت هر کدام 2 ورد پرس دارند یعنی 20 ورد پرس هرکدام 64 مگابایت یعنی حداکثر 1280مگابایت اشغال میشود حالا اگر 1000 کاربر همزمان هم باشد باز همان حدود 1300 گابایت رم اشغال میشود و یوزرها تو صف هستند تا از آن رم محدود استفاده کنند و هرکدام 30 ثانیه تایم اوت دارند؟

T.Toosi
August 24th, 2017, 14:13
در مورد میکرو ثانیه آیا وجود تایم اوت برای اسکریپت که مثلا ۳۰ ثانیه است، آیا تداخل رم یوزیج چند کاربر اتفاق نمی افتد؟

منظورتون از تداخل چی هست ؟


این سه حالت را حتی در فرومهای خارجی پرسیدم کسی پاسخی نداد. باز دست شما درد نکنه پاسخی دادید.
برای من مسئله شده
وقتی در php مموری لیمیت را مثلا 64 مگ تعیین میکنیم. چند حالت دارد که معلوم نیست کدوم از این سه حالت است.

آیا این به این معنی است که مثلا 10 اکانت هر کدام 2 ورد پرس دارند یعنی 20 ورد پرس هرکدام 64 مگابایت یعنی حداکثر 1280مگابایت اشغال میشود حالا اگر 1000 گاربر همزمان هم باشد باز همان حدود 1300 گابایت رم اشغال میشود و یوزرها تو صف هستند تا از آن رم محدود استفاده کنند و هرکدام 30 ثانیه تایم اوت دارند؟

اگر روی 10 تا اکانت یا همان 20 تا وردپرس که کلا اجازه استفاده ی 1280 مگابایت داشته باشند، در یک میکروثانیه هر 20 تا وردپرس 1000 تا ویزیتور داشته باشد با توجه به زمان پردازش صفحه ای که باز کرده اند مشاهده خواهید کرد صفحه به سختی باز خواهد شد، به دلیل آنکه هندلر منتظر میماند تا مموری خالی شود تا پردازش بعدی را انجام دهد، هرچه میزان execution time یا همان timeout اسکریپت بیشتر باشد بَدتر خواهد شد، برای همین همچین آپشنی قرار داده شده است تا حداکثر زمان استفاده یک اسکریپت را کنترل کنید تا مموری تلف نشود، در صورتی تعداد ویزیتور ها یا request ها از مقدار بالا بیشتر شوند تا حدی که مموری خالی نداشته باشید تمامی performance های روی سرور کیل میشود، اگر بروی وب سرور تعداد صف درخواست ها را هم محدود کرده باشید (request queue exceeds) دیگر request ای قبول نمیکند و ارور 503 در بازگشت request کاربر نمایش خواهد داد.

abc500x500
August 24th, 2017, 14:40
منظورتون از تداخل چی هست ؟


.
منطورم بد بیان کرده بودم. یعنی مثلا هزار درخواست همزمان هست و همه تو صف هستند و فرصت برای آزاد کردن رم نمیماند.

من بالاخره نفهمیدم کدام گزینه زیر درسته:
فرض کنید php memory limit برابر ۶۴مگابایت باشد و ۱۰ اکانت هاست باشد و هر اکانت ۲ وردپرس نصب و هر وردپرس ۷ ویزیتور واقعا همزمان دارد.
حافظه اشغال شده سیستم کدام گزینه زیر خواهد بود:
۶۴*۱۰*۲*۷=۸۹۶۰ مگابایت => به تعداد وردپرسها ضربدر تعداد ویزیتورها ضربدر مقدار رم اشغال میشود.یعنی به ازای هر ویزیتور فوری 64مگ از رم اشغال خواهد شد و با تعدد ویزیتور فقط برای یک ورد پرس کل رم اشغال خواهد شد.

۶۴*۱۰*۲=۱۲۸۰ مگابایت => فقط به تعداد وردپرسها ضربدر مقدار رم اشغال میشود. هر ورد پرس فقط64مگ اشغال و ویزیتورهای همزمان باید منتظر باشند تا از آن حافظه محدود شده64 مگی استفاده کنند.و با تعدد ویزیتور حداکثر 64مگ رم مصرف خواهد شد.

۶۴*۱۰=۶۴۰ مگابایت => فقط به تعداد اکانتها ضربدر مقدار رم اشغال میشود. (این احتمال زیاد اشتباه است.)

abc500x500
August 26th, 2017, 15:13
درود
پاسخ سوال من درباره مموری لیمیت در php.ini
وقتی memory_limit=64m یعنی یک اسکریپت به ازای هر پروسس همزمان حداکثر 64 MB رم مصرف می کند -[تقریبا میتوان گفت پروسس همزمان= کاربر همزمان]- ! یعنی یک پروسس 64مگ 10 پروسس 640 مگابایت.

اگر اسکریپت پلاگینهای متعدد و پروسس بالا داشته باشد مقدار بیشتری باید رم اختصاص داده باشد

پس برای هاست کردن یک وردپرس یا دروپال روی یک سرور اختصاصی با رم ۶۴۰۰۰ مگابایتی نباید memory_limit را مثلا ۱۶۰۰۰ مگابایت تنظیم کنیم چون به ازای هر پروسس یا هر کاربر تا 16گیگ رم مصرف خواهد کرد اگر وردپرس معمولی است ۶۴ تا ۱۲۸ رم و اگر پلاگینهای پرمصرف دارد مثلا ۲۵۶ مگابایت کافی است.
این برداشت من از لینک زیر است. اگر اشتباه است متخصصین گرامی اصلاح بفرمایند:
https://www.drupal.org/docs/7/managing-site-performance-and-scalability/changing-php-memory-limits

abc500x500
August 26th, 2017, 18:22
در توضیحات سایت رسمی php نوشته:
برای جلوگیری از پرشدن رم توسط اسکریپتهایی که ضعیف برنامه نویسی شدن مموری لیمیت کاربرد دارد.

توجه: بابد با M به معنی مگابایت مقدار داده شود اگر MB بنویسید اثر ندارد!(گویا مقدار 128 مگ که پیش فرض است در صورت اشتباه مقدار دادن، اعمال میشود!)

اگر منفی 1 نوشته شود محدودیتی قائل نخواهد شد.

http://php.net/manual/en/ini.core.php#ini.memory-limit