免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3412 | 回复: 11
打印 上一主题 下一主题

数据库服务器优化 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-05-10 14:31 |只看该作者 |倒序浏览
硬件:DELLR710 ,Xeon E5620 2.4GHz ,12G内存
在服务器上跑了LAMP,外加一个数据采集程序,通过数据采集程序采集数据写入到MYSQL中,然后通过前台PHP来调用和管理维护
现在my.cnf配置如下:
[client]
port            = 3306
socket          = /Database/mysql/mysql.sock
[mysqld]
port            = 3306
socket          = /Database/mysql/mysql.sock
skip-name-resolve
innodb_file_per_table
back_log = 50
max_connections = 100
max_connect_errors = 10
table_open_cache = 2048
max_allowed_packet = 16M
binlog_cache_size = 1M
max_heap_table_size = 64M
read_buffer_size = 2M
read_rnd_buffer_size = 16M
sort_buffer_size = 8M
join_buffer_size = 8M
thread_cache_size = 8
thread_concurrency = 8
query_cache_size = 64M
query_cache_limit = 2M
ft_min_word_len = 4
default-storage-engine = INNODB
thread_stack = 192K
transaction_isolation = REPEATABLE-READ
tmp_table_size = 64M
log-bin=mysql-bin
binlog_format=mixed
slow_query_log
long_query_time = 2
server-id = 1
key_buffer_size = 32M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
myisam_recover
innodb_additional_mem_pool_size = 128M
innodb_buffer_pool_size = 8G
innodb_data_file_path = ibdata1:2000M:autoextend
innodb_data_home_dir = /Database/mysql
innodb_file_io_threads = 4
innodb_thread_concurrency = 16
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 8M
innodb_log_file_size = 256M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 75
innodb_lock_wait_timeout = 120
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
auto-rehash
[myisamchk]
key_buffer_size = 512M
sort_buffer_size = 512M
read_buffer = 8M
write_buffer = 8M
[mysqlhotcopy]
interactive-timeout


随着数据量的增长,现在通过前台访问响应很慢,请教大家我配置有什么地方需要修改吗?

论坛徽章:
4
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52戌狗
日期:2013-12-27 15:08:11
2 [报告]
发表于 2012-05-10 14:50 |只看该作者
瓶颈在哪呢,另外 ,你这是生产环境不,慢查询就没必要开启了把

论坛徽章:
0
3 [报告]
发表于 2012-05-10 15:31 |只看该作者
回复 2# 小版主杀手

是生产环境,开慢查询就是为了查会什么会变慢,看是否是SQL语句的问??

   

论坛徽章:
4
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52戌狗
日期:2013-12-27 15:08:11
4 [报告]
发表于 2012-05-10 15:35 |只看该作者
oulinhl 发表于 2012-05-10 15:31
回复 2# 小版主杀手

是生产环境,开慢查询就是为了查会什么会变慢,看是否是SQL语句的问??

噢 卡的时候看下所有进程的状态 ,另外数据库系统的内存 CPU情况呢

论坛徽章:
0
5 [报告]
发表于 2012-05-10 15:46 |只看该作者
回复 4# 小版主杀手

系统的整体CPU占用并不高,只不过通过top查看mysqld进程cpu和mem过高!!

   

论坛徽章:
4
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52戌狗
日期:2013-12-27 15:08:11
6 [报告]
发表于 2012-05-10 15:56 |只看该作者
oulinhl 发表于 2012-05-10 15:46
回复 4# 小版主杀手

系统的整体CPU占用并不高,只不过通过top查看mysqld进程cpu和mem过高!!


最大并发量呢?慢日志里有记录去分析 开启profiling,定位I/O消耗和CPU消耗

论坛徽章:
0
7 [报告]
发表于 2012-05-10 16:07 |只看该作者
回复 6# 小版主杀手

最大并发量是100

开启profiling,定位I/O消耗和CPU消耗?这个我没有用过,请问怎么使用??谢谢!:wink:


   

论坛徽章:
9
每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00数据库技术版块每周发帖之星
日期:2016-03-07 16:30:25
8 [报告]
发表于 2012-05-10 16:07 |只看该作者
本帖最后由 cenalulu 于 2012-05-10 16:07 编辑

set global log-slow-query =1;
set global long-query-time=2;

然后改进出现频率最高的慢查询,这是优化MySQL最好的方法:wink:,比调几个参数要强多了。

论坛徽章:
4
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52戌狗
日期:2013-12-27 15:08:11
9 [报告]
发表于 2012-05-10 16:11 |只看该作者
oulinhl 发表于 2012-05-10 16:07
回复 6# 小版主杀手

最大并发量是100


测试用的
可用来查询SQL 会执行多少时间,System lock和Table lock 花多少时间等等,对定位一条语句的I/O消耗和CPU消耗 非常重要。
从启动profile之后的所有查询包括错误的语句都会记录。
关闭会话或者set profiling=0 就关闭了。
# 开启profiling
mysql> set profiling=1;
mysql> select * from user limit 1;
mysql> select count(*) from user group by sexal;
# 查看这些语句的profile
mysql> show profiles;
+--------------+----------------+--------------------------------------------------------------+
| Query_ID | Duration     | Query                                                                      |
+--------------+----------------+--------------------------------------------------------------+
|        1        | 0.00013200   | SELECT DATABASE()                                               |
|        2        | 0.00044100   | select * from user limit 2                                      |
|        3        | 1.95544100   | select nick,count(*) from user group by online|
+--------------+----------------+--------------------------------------------------------------+
查看具体一条(Query_ID=3 这一条)语句的profiles,包括CPU和柱塞I/O的情况
show profile cpu,block io for query 3;
show profile  * for query 2;--查看所有

论坛徽章:
0
10 [报告]
发表于 2012-05-10 16:20 |只看该作者
谢谢8楼和9楼的帮助!
现在已经开启了慢查询

然后会去开启profiling,验证是那个环节出了问题

小弟在此谢谢大家了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP