پاسخ : دوستانی که تو کانفیگ حرفه ای ان نظر بدن
ببخشید همه اساتید جمع هستند جسارت نباشه :)
سروری که مشکل mysql داره با جدا کردن سرور وب از دیتابیس مشکلش حل نمیشه ، به فرض اینکه لود سرور در اوج ترافیک روی 30 باشه از این 30 تا فقط 3 یا 4 تاش مربوط به وب سرور هست و بقیه مربوط به دیتابیس شما اگر سرور دومی هم تهیه کنید با همین کانفیگ مجدد به مشکل لود برخواهید خورد و مشکلتان حل نمیشه.
گام اول در مشکل mysql این هست که اول پارامتر های mysql را بررسی کنید و متناسب با مصرفی که دارید پارامتر ها را تنظیم کنید بهتر از این دستور و برنامه استفاده کنید
کد:
wget mysqltuner.pl
perl mysqltuner.pl
خروجی این دستور را همینجا بزارید تا در موردش راهنماییتان کنم.
دوم اینکه باید در اوج ترافیک دستور
کد:
mysqladmin processlist
بزنید تا مشخص بشه کدام کوئری یا کوئری ها مشکل ساز هستند و برای حل مشکلشان اقدام کنید (این قسمت برنامه نویسی و بهینه سازی دیتابیس هست)
سوم
فعال کردن slow query log و انالیز کوئری ها و حل مشکل کوئری ها که همان کار قبلی هست ولی با استفاده از برنامه های انالیز راحت می توانید بفهمید روی حل مشکل کدام کوئری کار کنید موثر تر هست.
نهایتا اگر خواستید از سرور دوم برای دیتابیس استفاده کنید نوع هارد و نوع raid و مقدار رم سرور تاثیر به سزایی در عملکرد mysql خواهد داشت.
1 فایل پیوست
پاسخ : دوستانی که تو کانفیگ حرفه ای ان نظر بدن
نقل قول:
نوشته اصلی توسط
ali2k
ببخشید همه اساتید جمع هستند جسارت نباشه :)
سروری که مشکل mysql داره با جدا کردن سرور وب از دیتابیس مشکلش حل نمیشه ، به فرض اینکه لود سرور در اوج ترافیک روی 30 باشه از این 30 تا فقط 3 یا 4 تاش مربوط به وب سرور هست و بقیه مربوط به دیتابیس شما اگر سرور دومی هم تهیه کنید با همین کانفیگ مجدد به مشکل لود برخواهید خورد و مشکلتان حل نمیشه.
گام اول در مشکل mysql این هست که اول پارامتر های mysql را بررسی کنید و متناسب با مصرفی که دارید پارامتر ها را تنظیم کنید بهتر از این دستور و برنامه استفاده کنید
کد:
wget mysqltuner.pl
perl mysqltuner.pl
خروجی این دستور را همینجا بزارید تا در موردش راهنماییتان کنم.
دوم اینکه باید در اوج ترافیک دستور
کد:
mysqladmin processlist
بزنید تا مشخص بشه کدام کوئری یا کوئری ها مشکل ساز هستند و برای حل مشکلشان اقدام کنید (این قسمت برنامه نویسی و بهینه سازی دیتابیس هست)
سوم
فعال کردن slow query log و انالیز کوئری ها و حل مشکل کوئری ها که همان کار قبلی هست ولی با استفاده از برنامه های انالیز راحت می توانید بفهمید روی حل مشکل کدام کوئری کار کنید موثر تر هست.
نهایتا اگر خواستید از سرور دوم برای دیتابیس استفاده کنید نوع هارد و نوع raid و مقدار رم سرور تاثیر به سزایی در عملکرد mysql خواهد داشت.
ممنون لطف کردید
به ترتیب زدم خروجی اینو داد
بصورت عکس هم گذاشتمش
کد PHP:
[root@~]# perl mysqltuner.pl
>> MySQLTuner 1.2.0 - Major Hayden <major@mhtx.net>
>> Bug reports, feature requests, and downloads at http://mysqltuner.com/
>> Run with '--help' for additional options and output filtering
Please enter your MySQL administrative login: root
Please enter your MySQL administrative password:
-------- General Statistics --------------------------------------------------
[--] Skipped version check for MySQLTuner script
[OK] Currently running supported MySQL version 5.5.32
[OK] Operating on 64-bit architecture
-------- Storage Engine Statistics -------------------------------------------
[--] Status: +Archive -BDB -Federated +InnoDB -ISAM -NDBCluster
[--] Data in MyISAM tables: 268M (Tables: 60)
[--] Data in InnoDB tables: 304K (Tables: 6)
[--] Data in PERFORMANCE_SCHEMA tables: 0B (Tables: 17)
[!!] Total fragmented tables: 14
-------- Security Recommendations -------------------------------------------
[OK] All database users have passwords assigned
-------- Performance Metrics -------------------------------------------------
[--] Up for: 6h 2m 5s (34M q [1K qps], 3M conn, TX: 87B, RX: 6B)
[--] Reads / Writes: 86% / 14%
[--] Total buffers: 672.0M global + 12.4M per thread (1000 max threads)
[OK] Maximum possible memory usage: 12.7G (41% of installed RAM)
[OK] Slow queries: 0% (0/34M)
[OK] Highest usage of available connections: 80% (801/1000)
[OK] Key buffer size / total MyISAM indexes: 512.0M/38.7M
[OK] Key buffer hit rate: 100.0% (235M cached / 29K reads)
[!!] Query cache is disabled
[OK] Sorts requiring temporary tables: 0% (0 temp sorts / 562K sorts)
[!!] Temporary tables created on disk: 50% (537K on disk / 1M total)
[OK] Thread cache hit rate: 85% (538K created / 3M connections)
[!!] Table cache hit rate: 0% (400 open / 693K opened)
[OK] Open file limit used: 6% (336/5K)
[OK] Table locks acquired immediately: 96% (33M immediate / 34M locks)
[OK] InnoDB data size / buffer pool: 304.0K/128.0M
-------- Recommendations -----------------------------------------------------
General recommendations:
Run OPTIMIZE TABLE to defragment tables for better performance
MySQL started within last 24 hours - recommendations may be inaccurate
Enable the slow query log to troubleshoot bad queries
When making adjustments, make tmp_table_size/max_heap_table_size equal
Reduce your SELECT DISTINCT queries without LIMIT clauses
Increase table_cache gradually to avoid file descriptor limits
Variables to adjust:
query_cache_size (>= 8M)
tmp_table_size (> 16M)
max_heap_table_size (> 16M)
table_cache (> 400)
فایل پیوست 14417
پاسخ : دوستانی که تو کانفیگ حرفه ای ان نظر بدن
تنظیمات دیتابیس را بزارید تا بگم چه تغییری بدید
خروجی دستور:
پاسخ : دوستانی که تو کانفیگ حرفه ای ان نظر بدن
نقل قول:
نوشته اصلی توسط
ali2k
تنظیمات دیتابیس را بزارید تا بگم چه تغییری بدید
خروجی دستور:
خدمت شما
کد PHP:
[root@~]# cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
max_connection=1000
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
innodb_file_per_table = 1
thread_concurrency = 16
thread_cache_size = 8
myisam_sort_buffer_size = 64M
read_rnd_buffer_size = 8M
read_buffer_size = 2M
sort_buffer_size = 2M
key_buffer = 512M
big-tables
# Settings user and group are ignored when systemd is used (fedora >= 15).
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mysqld according to the
# instructions in http://fedoraproject.org/wiki/Systemd
user=mysql
default-storage-engine = InnoDB
# Semisynchronous Replication
# http://dev.mysql.com/doc/refman/5.5/en/replication-semisync.html
# uncomment next line on MASTER
;plugin-load=rpl_semi_sync_master=semisync_master.so
# uncomment next line on SLAVE
;plugin-load=rpl_semi_sync_slave=semisync_slave.so
# Others options for Semisynchronous Replication
;rpl_semi_sync_master_enabled=1
;rpl_semi_sync_master_timeout=10
;rpl_semi_sync_slave_enabled=1
# http://dev.mysql.com/doc/refman/5.5/en/performance-schema.html
;performance_schema
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
پاسخ : دوستانی که تو کانفیگ حرفه ای ان نظر بدن
کد PHP:
table_cache = 2000
table_open_cache = 2000
table_definition_cache = 2000
max_heap_table_size = 32M
tmp_table_size= 32M
#tmpdir=/dev/shm
query_cache_type = 1
query_cache_size = 128M
query_cache_limit= 8M
query_cache_min_res_unit=1k
این پارامتر ها را به فایل کانفیگ اضافه کنید قبل عبارت [mysqld_safe] بزارید و فایل کانفیگ را ذخیره کنید و سرویس mysql را ری استارت کنید.
یکی از پارامتر ها را اول خط # گذاشتم که این باید ادرس tmpfs را جایگزین کنید با زدن دستور
میتوانید ادرسش را پیدا کنید بعد از جایگزین کردن ادرس صحیح علامت # را از اول خط بردارید و کانفیگ را ذخیره و سرویس mysql را ری استارت کنید.
پاسخ : دوستانی که تو کانفیگ حرفه ای ان نظر بدن
قطعا مشکل io روی این سرور دارید و علت کم اورد سرور توی ترافیک بالا همینه با تغییرات بالا که گفتم به مراتب مشکلتون کمتر خواهد شد تست کنید نتیجه را اعلام کنید.
1 فایل پیوست
پاسخ : دوستانی که تو کانفیگ حرفه ای ان نظر بدن
نقل قول:
نوشته اصلی توسط
ali2k
کد PHP:
table_cache = 2000
table_open_cache = 2000
table_definition_cache = 2000
max_heap_table_size = 32M
tmp_table_size= 32M
#tmpdir=/dev/shm
query_cache_type = 1
query_cache_size = 128M
query_cache_limit= 8M
query_cache_min_res_unit=1k
این پارامتر ها را به فایل کانفیگ اضافه کنید قبل عبارت
[mysqld_safe] بزارید و فایل کانفیگ را ذخیره کنید و سرویس mysql را ری استارت کنید.
یکی از پارامتر ها را اول خط # گذاشتم که این باید ادرس tmpfs را جایگزین کنید با زدن دستور
میتوانید ادرسش را پیدا کنید بعد از جایگزین کردن ادرس صحیح علامت # را از اول خط بردارید و کانفیگ را ذخیره و سرویس mysql را ری استارت کنید.
واقعا ممنونم علی اقا
خیلی کمک کردی
کارای که گفتید رو انجام دادم
دوباره اون دستورات رو زدم فقط اینا مونده انگار
کد PHP:
-------- Recommendations -----------------------------------------------------
General recommendations:
Run OPTIMIZE TABLE to defragment tables for better performance
MySQL started within last 24 hours - recommendations may be inaccurate
Enable the slow query log to troubleshoot bad queries
When making adjustments, make tmp_table_size/max_heap_table_size equal
Reduce your SELECT DISTINCT queries without LIMIT clauses
Variables to adjust:
tmp_table_size (> 32M)
max_heap_table_size (> 32M)
بعدش اون دستور که گفتید رو زدم نتیجه شو عکس رو میزارم شما راهنمایی کنید
فایل پیوست 14418
پاسخ : دوستانی که تو کانفیگ حرفه ای ان نظر بدن
خواهش ، اون دستور و ادرس که گفتم الان درسته فقط # رو از اول خط بردار
در مورد مقدار 32M هم تا 64M میتونی افزایش بدی یعنی مقدار 32 را بکن 64 و ذخیره کن و سرویس mysql را ری استارت کن.
بعد از انجام این کارها حداقل 24 ساعت باید صبر کنی تا مشخص بشه عملکرد mysql چقدر فرق کرده چون شما تازه سرویس را ری استارت کردی خروجی های برنامه mysqltuner دیگه قابل اعتماد نیستند پس بعد از انجام همین دو تغییر اخری دیگه کاریش نداشته باش و تا فردا صبح صبرکن بعد مجدد خروجی کامل mysqltuner را اینجا بزار تا اگر تغییر لازم هست بگم
پاسخ : دوستانی که تو کانفیگ حرفه ای ان نظر بدن
یکبار هم وارد phpmyadmin بشید و تمام جدول ها را انتخاب کنید و optimize بزنید.
پاسخ : دوستانی که تو کانفیگ حرفه ای ان نظر بدن
اون # رو ورداشتم ارور داد
کد PHP:
# service mysqld restart
Stopping mysqld: [ OK ]
MySQL Daemon failed to start.
دوباره گذاشتمش و mysql رو ری استارت زدم درست شد
کد PHP:
# service mysqld restart
Stopping mysqld: [ OK ]
Starting mysqld: [ OK ]