PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : سوال : Cpu Usage بالاي يك query



parvazeh
07-26-2008, 08:01 AM
سرور سايتم به صورت Share هستش كه با افزايش مصرف cpu بيشتر از 40 ثانيه از 60 ثانيه سايت دان ميشه. من لاگ مصرف cpu رو نگاه كردم و يه قسمت بود كه مرتبا تكرار مي شد و cpu usage بالايي داشت. :



DELETE FROM mos_1session WHERE (time<1215056782 AND guest>=0) OR (time<1217053182 AND guest<0)




سوالم اينه كه اين مربوط به چه بخشيه و آيا امكانش هست غير فعال بشه؟ خيلي حياتيه لطفا كمك كنيد. با تشكر.

parvazeh
07-26-2008, 08:06 AM
درضمن من تو تنظيمات مامبو ثبت آمار رو هم غير فعال كردم.

mhadaily
07-26-2008, 08:31 AM
آیا کامپونننتی یا اسکریپتی روی سایت خود قرار دادید ؟

اشکال از اون مورد بالا نیست اون مر بوط به session ها است

در ضمن 90 درصد کاربران از سرور های اشتراکی استفاده می کنند !!! مشکل حتما از جایی دیگر است

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

در یک فولدر دیگر مامبو جدید و تمیز بدون نصب هیچ اضافاتی رو بریزید و و حالا تست کنید ببنید بازم مشکل دارید !!

یاعلی

parvazeh
07-26-2008, 10:51 AM
نميشه حالا غير فعالش كرد البته من اطلاعاتي در اين زمينه ندارم.
كامپوننت هايي كه نصبه :

MOStlyCE Admin
بانک اطلاعاتی
تبلیغات
خبر خوانها
خبرنامه و ايميلهاي گروهي
خروجی RSS
SEF Advance
لينكستان
نظر سنجي
پل SMF
یادداشت ها

البته من فقط پل SMF (كه غير فكر نكنم فعال باشه)‌ و Sef Advance رو نصب كردم. و بقيه نصب بود از ابتدا روش.

mhadaily
07-26-2008, 12:20 PM
دوست عزیز اگر لود سرور رو شما می برید بالا و به شما تذکر داده شده مطمئنان از هسته اصلی مامبو نیست

بنابراین باید از کامپوننت هایی که اضافی نصب کردید باشه و یا از اسکریپت دیگری که روی سایت باشه و شما گذاشته باشید

یا اینکه دستکاری کردید در کد ها و ....

به هر باید تک تک تست کنید غیر فعال کنید ببنید اشکال از چیست یا لوگ ها رو دقیق تر بررسی کنید و ریشه یابی کنید !

parvazeh
07-26-2008, 12:37 PM
عرض كردم خدمتتون من لاگ مصرف cpu كه باعث sospend شدن شده بود رو مشاهده كردم. و اين خطي كه اينجا گذاشتم بيشترين بار رو ايجاد مي كرد. (با هر بار اجرا 9 ثانيه!!!!)

بعد از اون query اين يكي خيلي بار ايجاد مي كرد (هربار تقريبا 5 ثانيه!!!):




SHOW TABLES LIKE '%sef_config'




با اطلاعات كمي كه دارم ولي فكر مي كنم اين دو query مربوط به هسته mambo ميشه. در ضمن mambo يكي از پر مصرف ترين (از لحظا cpu) ، ـ cms هاست. به طوري كه مثلا 110mb يا سايت هاي ديگر كه خدمات رايگان ميدند نصب mambo/joomla رو روي هاست رايگان قدغن كردند.

parvazeh
07-26-2008, 01:25 PM
اينو تازه ديدم : (40 ثانيه)‌




# Query_time: 40 Lock_time: 0 Rows_sent: 0 Rows_examined: 0
use ***;
UPDATE mos_1session SET `time`='1217055816',`userid`='0',`usertype`='',`us ername`='',`gid`='0',`guest`='1' WHERE session_id='5f3548f3c9c4fe45f3fa13adde19f552'

mhadaily
07-26-2008, 01:44 PM
ما الان حداقل 3000 هزار تا سایت مامبو یی مامبولرن داریم که دارن به خوبی کار می کنن ! پس می بینید که مشکل از هسته نباید باشه مگر اینکه سرور واقعا ضعیف باشه که باید روش فقط HTMlگذاشت !!!

در مورد کامپوننت ها هم گفتم احتما لا از اون هاست که تازه نصب کردید لزوما هر کامپوننت اضافی که نصب میشه نباید درست باشه ! شاید مشکل دار باشه !

پیشنهاد دادم به شما که مامبوتون رو تر و تمیز کنید یعنی مثلا همین sef و پل و هر چیزی که نصب کردید اضافی رو حذف کنید و یا غیر فعال ببنید باز هم لود بالا میره !

اگر که خودتون به فایلی یا جایی دست نزدید البته !

باید بررسی کنید

parvazeh
07-26-2008, 03:02 PM
منم مطمئنم كه مشكل از سروره. چون تقريبا دوساله كه سايت داره بدون مشكلي كار مي كنه. اگه مشكل ازمامبو بود تا به حال بايد چندين بار اين اتفاق مي افتاد. منظورم اين بود كه راهي نيست query هاي بدون نياز غير فعال بشن؟ مثلا ثبت آمار و ...

mhadaily
07-26-2008, 03:17 PM
هر چیزی که شما نخواهید و در غیر فعالش کنید کلا کد هاش غیر فعال میشن مثلا اگر کامپوننت sef نصب هست اما فعال نباشه کویریش هاش هم فعال نیستد

پس هر چیزی رو نمی خواهید غیر فعال کنید و یا حذف کنید

موفق باشید

parvazeh
07-26-2008, 05:32 PM
از هسته مامبو چي؟ نميشه چيزي رو غير فعال كرد .شايد سوالم خيلي خنده دار باشه. اميدوارم اينطور نباشه البته.

mhadaily
07-26-2008, 07:21 PM
خیر نمیشه غیر فعال کرد هسته هست اسمش دوست من

اگر چیزی قرار باشه غیر فعال بشه اضافات هستن ...

parvazeh
07-26-2008, 09:18 PM
تو يكي از اين query هايي كه اينجا گذاشتم به نظر ميرسه لاگين بودن فرد رو چك مي كنه. من سايتم ثبت نام نداره و فقط خودم تو پانل مديريت لاگين ميكنم. پس تو صفحات اصلي سايت نيازي به چك شدن يوزر نيست : (به نظر ميرسه اين كد زمان لاگين كاربرارو چك ميكنه )




DELETE FROM mos_1session WHERE (time<1215056782 AND guest>=0) OR (time<1217053182 AND guest<0)



اينطور كه از كد برمياد زمان لاگين رو چك ميكنه. اينو چي؟ نميشه كاريش كرد؟ يعني تو صفحات اصلي سايت (غير از شاخه administrator)‌ زمان لاگين كاربرا رو چك نكنه.

mhadaily
07-27-2008, 05:25 AM
این لاگین بودن نیست دوست عزیز

parvazeh
07-28-2008, 07:05 AM
پيداش كردم توي
core.classes.php
تابع : purge()
توي لوكال حذفش كردم. سايت كار مي كرد. اما با حذفش اطلاعات زيادي در ديتابيس حذف نشده مي مونه. فقط اگه بدونم كدوم خط از اين فايل منجر به ذخيره اطلاعات ميشه ديگه حله.





$database->setQuery("DELETE FROM #__session WHERE (time<$past AND guest>=0) OR (time<$adminpast AND guest<0)");

firoozmandan
07-28-2008, 07:28 AM
دوست عزیز

مشکل از CORE مامبو نیست !
اگر تنظیمات سرور درست باشه ، اگر کامپوننت هایی که استفاده میکنید اپتیمایز باشه هیچ مشکلی برای شما پیش نمیاد

در حال حاضر بیشتر از 3000 سایت دارن با مامبو بدون هیچ مشکلی کار میکنند .

یا علی

parvazeh
07-28-2008, 08:13 AM
درسته. اما مامبو امكانات زيادي داره. كه باعث ايجاد بار روي سرور ميشه. خوب يه قسمت هست به نام session كه من فقط مي خوام وقتي كاربري لاگين كرد تو ديتابيس قرار بگيره. اما الان با وارد شدن به سايت يك آيتم به اين table اضافه ميشه (با user خالي) :





username time session_id guest userid usertype gid
1217232561 e4b1ec4ed437da7bb3ecc55057726983 1 0 0





كه اين آيتم بدون كاربر زماني بدرد مي خوره كه بخواهيم حاضرين در سايت رو بشماريم (فكر نمي كنم استفاده ديگه اي داشته باشه)‌
اما اگه كاربر لاگين كنه حتما بايد اين ايتم وجود داشته باشه تا براي بازديد هر صفحه مجبور نباشه يوزر نيم و پسشو بزنه

نمي دونم واضح منظورمو گفتم يا خير.
فقط اگه مي دونيد تو كدوم فايل با ورود يك بازديد كننده (غير كاربر)‌يك session به اين table اضافه ميشه. بگيد. من هرچي گشتم پيدا نكردم.

firoozmandan
07-28-2008, 08:23 AM
سلام



كه اين آيتم بدون كاربر زماني بدرد مي خوره كه بخواهيم حاضرين در سايت رو بشماريم (فكر نمي كنم استفاده ديگه اي داشته باشه)‌
اما اگه كاربر لاگين كنه حتما بايد اين ايتم وجود داشته باشه تا براي بازديد هر صفحه مجبور نباشه يوزر نيم و پسشو بزنه


به نظر میاد معنی شما معنی دیگه ای از session در ذهنتون هست و تنها یک کاربرد اون رو در نظر میگیرید !

خیر دوست عزیز با حذف این مورد سایت شما دچار مشکلات زیادی میشه ! حتی شما نمیتونید وارد قسمت مدیریت بشید و سایت رو آپدیت کنید

سایت شما فکر نمیکنم از مامبولرن یا ... بزرگتر باشه اما لود سرور همیشه زیر 1 هست !

یا سایتهایی که روی سرور مامبوسرور هستند همگی یا مامبو هستند و یا جوملا اما لود سرور در اکثر اوقات زیر 1 هست .

من باز هم به شما پیشنهاد میکنم راه دیگه ای در پیش بگیرید چرا که این راه مشکل شما رو حل نمیکنه بلکه مشکلات بیشتری هم برای شما به ارمغان میاره !

یا علی

parvazeh
07-28-2008, 08:32 AM
ببينيد. من اون قسمت رو كه مد نظرم بود پيدا كردم :
فايل core.classes.php





$currentSession->generateId();
                if (!$currentSession->insert()) {
                    die( $currentSession->getError() );
                }
                setcookie( $sessionCookieName, $currentSession->getCookie(), time() + 43200, '/' );
                //$_COOKIE["sessioncookie"] = $session->getCookie();
                if ($usercookie) {
                    // Remember me cookie exists. Login with usercookie info.
                    require_once (mamboCore::get('mosConfig_absolute_path').'/includes/authenticator.php');
                    $authenticator =& mamboAuthenticator::getInstance();
                    $authenticator->authenticateUser ($message, $usercookie['username'], $usercookie['password'], null, $currentSession);
                }



تو وارد شدن به مديريت هم مشكلي ندارم
session ايجاد ميشه فقط با ورود كاربر. اما با ورود ويزيتور (بازديد كننده) ايجاد نميشه.

ميتونيد بگيد تو چه بخشي session يك بازديد كننده مورد استفاده قرار ميگيره؟
من احتمال ميدم تو بازديد مطالب و يا راي به مطالب باشه. (مثلا  با چك كردن session نمي ذاره يه كاربر دوبار راي بده به يه مطلب)

من تو قسمت غير مديريت سايت اصلا ورود و يا ثبت نام كاربر ندارم.



پاسخ : سوال : Cpu Usage بالاي يك query
« پاسخ #20 : امروز، ساعت 13:22 »
نقل قول ويرايش حذف تقسیم موضوع
حتي تو بخش امتياز دادن به مطالب هم هنوز اجازه دوبار امتياز دادن پشت سر هم رونداريم. پس ميشه بگيد اين session ها براي ويزيتور ها چه فايده اي داره؟؟؟؟
(به جز موردي كه خودم گفتم : شمردن حاضرين در سايت)

و يه چيز خيلي مهمتر.توي سايت الان با phpmyadmin اين table رو نگاه كردم و مشاهده كردم 136,979 تا آيتم تو اين table وجود داره. (براي سايتي كه فقط 3 كاربر ادمين داره)  افراد انلاين به طور متوسط 20 نفر هستش. و بازديد در روز حدود 2400 نفر. آيا اين مقدار session بيش از حد نيست؟ آيا به من حق نميديد كه چاره اي براي اين بخش پيدا كنم ؟!؟

فقط با حذف :






$currentSession->generateId();
if (!$currentSession->insert()) {
die( $currentSession->getError() );
}





و





$database->setQuery("DELETE FROM #__session WHERE (time<$past AND guest>=0) OR (time<$adminpast AND guest<0)");



از فايل core.classes.php

نتيجه مطلوب حاصل ميشه (البته براي سايت هايي كه تو صفحات سايت ورود و ثبت نام كاربر ندارند و فقط از پانل مديريت استفاده مي كنند)
البته با حذف بخش دوم اگر در سيستمي غير از سيستم شخصي خودتون به پانل مديريت لاگين ميشيد بايد حتما پس از پايان كارتون بايد خروج رو بزنيد چون با گذشت زمان session شما expire نميشه.



** N پست شما یکی شد

firoozmandan
07-28-2008, 09:35 AM
اونچه شرط بلاغ بود ما با شما گفتیم ...

در هر صورت دیگر کاربران لطفا توجه داشته باشند :
این روش مورد تایید تیم مامبولرن نیست . در صورت استفاده از این روش و تغییر به این صورت قطعا دچار مشکل خواهید شد .

یا علی