ورود

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : سوال تخصصی در باره sql با پرداخت هزینه !!!!!!



serverstar.ir
January 28th, 2016, 10:54
با سلام و احترام

مشکلی داریم با یک سایت فروشگاهی وردپرس که دیتابیس سایت در زمانهایی شدیدا درگیر میشود و مصرف cpu در mysql بالا میرود به طوری که سایت دیگر بالا نمی آید

تعداد آنلاینها از 100 تا 600 نفر است اما این مشکل در هر تعداد انلاینی رخ میدهد
امکان دارد در هر لحظه 50 نفر باهم خرید کنند به بانک بروند و به سایت بازگردند

از لحاظ تنظیمات my.cnf کاملا بهینه است
از نظر سخت افزار 128 گیگ رم 2 cpu با مجموع 32 هسته زئون هارد ssd

کل مشکل آنطوری که فکر میکنیم از یک Query است که زمانی که تعداد آن Query توسط چند بازدید کننده زیاد باشد و در صف قرار بگیرد باعث هنگ کردن و پاسخ ندادن به query های در صف میشود ,

و ما میخوایم بفهمیم کدام query این مشکل را باعث میشود

تصویر زیر خروجی از mtop است که تایم یک query را تا 50 ثانیه هم نگه میدارد و دیگر query ها در صف میمانند , و باعث کندی و هنگ mysql میشود

29779

اگر کسی بتونه راهنمایی کنه Query مشکل ساز را پیدا کنیم با هزینه هیچ میکلی نداریم

با تشکر

- - - Updated - - -

یعنی متخصص sql نیست ؟

mhiizadi
January 28th, 2016, 11:04
سلام .
سیستم عامل چی هست ؟

Rezash
January 28th, 2016, 11:31
سلام
1. از افزونه های کش استفاده کنید تا قسمت های غیر ضروری هر بار از دیتابیس بارگذاری نشند.
2. افزونه ها رو یکی یکی غیر فعال کنید ، شاید مشکل از افزونه ها باشد. ( قبلا مشکل مشابهی رو با افزونه تاریخ شمسی داشتیم ( بخش آرشیو ) !)
3. فایل های پوسته یا مرتبط رو طوری تنظیم کنید که برای آی پی شما کل کویری های اجرا شده صفحه رو نمایش بده. از روی کویری ها میشه اطلاعات خوبی بدست آورد.

serverstar.ir
January 28th, 2016, 15:54
تشکر از دوستان
سنتوز و cpanel است

محتویات فایل my.cnf


[mysqld]
general_log_file = /var/log/mysql/mysql.log
general_log = 1
log_slow_queries = /var/log/mysql/mysql-slow.log
slow_query_log
local-infile=0
default-storage-engine=InnoDB
back_log=50
#skip_networking
max_user_connections=150
max_connections=300
max_connect_errors=20
table-open-cache=8192
table-definition-cache=4096
table_cache=1024
open_files_limit=10000
key-buffer-size=256M
tmp_table_size=2560M
max_heap_table_size=2560M
max_allowed_packet=256M
#sort_buffer_size = 1M
sort_buffer_size =60M
#read_buffer_size = 1M
read_buffer_size=8M
read_rnd_buffer_size=60M
myisam_sort_buffer_size=64M
thread_cache_size=60
query_cache_size=3200M
#Try number of CPU's*2 for thread_concurrency
thread_concurrency=32
query_cache_type=1
query_cache_limit=3200M
join_buffer_size=3M
wait_timeout=30
interactive_timeout=30
connect_timeout=15
long_query_time=2
# Innodb Configs
innodb_use_native_aio=0
innodb_buffer_pool_size=10G
innodb_read_io_threads=16
innodb_write_io_threads=16
innodb_io_capacity=300
innodb_buffer_pool_instance=10
innodb_file_per_table
innodb_log_files_in_group=2
innodb_log_buffer_size=8M
innodb_flush_log_at_trx_commit=2
innodb_thread_concurrency=32
innodb_file_io_threads=4
innodb_additional_mem_pool_size=20M
innodb_flush_method = O_DIRECT
innodb_purge_threads=1
innodb_adaptive_flushing=1
innodb_doublewrite=1
server-id=1
[safe_mysqld]
err-log=/var/log/mysqld.log
[mysqldump]
quick
[mysql]
no-auto-rehash
#safe-updates
[isamchk]
sort_buffer=64M
read_buffer=16M
write_buffer=16M
[myisamchk]
key_buffer=64M
sort_buffer=64M
read_buffer=16M
write_buffer=16M

cartman10mpi
January 28th, 2016, 18:30
Slow Queries لاگ رو فعال کنید ببینید کدوم یکی از درخواست ها زمان بیشتری رو صرف میکنه شاید اطلاعاتی بتونید کسب کنید
از این لینک استفاده کنید
http://www.ducea.com/2006/11/06/identifying-mysql-slow-queries/

Rezash
January 28th, 2016, 21:26
سلام
1. از افزونه های کش استفاده کنید تا قسمت های غیر ضروری هر بار از دیتابیس بارگذاری نشند.
2. افزونه ها رو یکی یکی غیر فعال کنید ، شاید مشکل از افزونه ها باشد. ( قبلا مشکل مشابهی رو با افزونه تاریخ شمسی داشتیم ( بخش آرشیو ) !)
3. فایل های پوسته یا مرتبط رو طوری تنظیم کنید که برای آی پی شما کل کویری های اجرا شده صفحه رو نمایش بده. از روی کویری ها میشه اطلاعات خوبی بدست آورد.

منظورم از مورد 3 این بود :
داخل wp-config این خط رو اضافه کنید ( موقت )

define('SAVEQUERIES', true)

و در فوتر سایت :


<?php
if ( current_user_can( 'administrator' ) ) {
global $wpdb;
echo "<pre>";
print_r( $wpdb->queries );
echo "</pre>";
}
?>

اطلاعات بیشتر :
http://codex.wordpress.org/Editing_wp-config.php#Save_queries_for_analysis
اگر مشکل از وردپرس باشه احتمال زیاد با این روش مشکل رو می تونید پیدا کنید.

arc1o0
January 28th, 2016, 21:39
با سوییچ به ماریا دی بی مشکل تا حد زیادی مرتفع خواهد شد.

serverstar.ir
January 30th, 2016, 12:23
Slow Queries لاگ رو فعال کنید ببینید کدوم یکی از درخواست ها زمان بیشتری رو صرف میکنه شاید اطلاعاتی بتونید کسب کنید
از این لینک استفاده کنید
http://www.ducea.com/2006/11/06/identifying-mysql-slow-queries/

تشکر این پلاگین را چند روزی است نصب کردم متاسفانه لاگ را مگه نمیدارد و ریل تایم باید مانیتور شود ولی خوب است

- - - Updated - - -


منظورم از مورد 3 این بود :
داخل wp-config این خط رو اضافه کنید ( موقت )

و در فوتر سایت :


<?php
if ( current_user_can( 'administrator' ) ) {
global $wpdb;
echo "<pre>";
print_r( $wpdb->queries );
echo "</pre>";
}
?>

اطلاعات بیشتر :
http://codex.wordpress.org/Editing_wp-config.php#Save_queries_for_analysis
اگر مشکل از وردپرس باشه احتمال زیاد با این روش مشکل رو می تونید پیدا کنید.

تشکر از کش استفاده میشود و به نظر شما کدام افزرونه کش مناسب و حرفه ای تر است ؟
افزونه اضافه نصب نیست

- - - Updated - - -


با سوییچ به ماریا دی بی مشکل تا حد زیادی مرتفع خواهد شد.

تشکر inodb استفاده میشه و فکر میکنم از ماریا بهتره

- - - Updated - - -

دوستان در محتویات فایل my.cnf نقصی نمیبینید و پیشنهادی ندارید ؟

iranian-portal
January 30th, 2016, 14:13
درود بر شما؛

با توجه به اینکه فرمودید سایت فروشگاهی هست، احتمالا برای سفارشی سازی نمایش محتوا، در بخش های زیادی کوئری های وردپرس ویرایش شدند.
اگر این ویرایش کوئری ها توسط "کوئری پست" انجام شده، شک نداشته باشید 90درصد مشکل و فشار وارده به همین دلیل هست. اگر اطلاعات بیشتری در این مورد نیاز داشتید؛ کوئری پست وردپرس و مشکلات بهینه سازی سایت (http://www.anatajj.com/381/%DA%A9%D9%88%D8%A6%D8%B1%DB%8C-%D9%BE%D8%B3%D8%AA-%D9%88%D8%B1%D8%AF%D9%BE%D8%B1%D8%B3/)

همچنین، اگر سفارشی سازی کوئری ها توسط WP_Query انجام شده، برای کاهش فشار، در مکان هایی که نیاز به متاها و صفحه بندی ندارید، محاسبه شماره صفحات و فراخوانی متاهای اضافی مانند (دسته بندی، برچسب ها) رو در سفارشی سازی WP_Query غیر فعال کنید. لذا شما سه محاسبه پر فشار و فراخوانی محتوا رو از کوئری حذف کردید

پیروز باشید