Mysql内存占用太高,8G被耗光了。

believe_me 2010-11-08 09:34:03
有一个后台daemon程序,运行期一直保持着数据库连接。并有频繁的数据插入。
数据库有500多个表,都会被频繁的使用。
数据库运行一段时间就会发现,8G的内存竟然会被吃光了。配置文件使用的是默认的my-medium.cnf文件。
希望大虾能够提示,这个问题应该从哪些方面考虑解决。
谢谢

数据库版本信息:
Server version: 5.1.46-log Source distribution

my.cnf文件,去除了中间部分注释

# Example MySQL config file for medium systems.
#
# This is for a system with little memory (32M - 64M) where MySQL plays
# an important part, or systems up to 128M where MySQL is used together with
# other programs (such as a web server)
#
# You can copy this file to
# /etc/my.cnf to set global options,
# mysql-data-dir/my.cnf to set server-specific options (in this
# installation this directory is /usr/local/mysql/var) or
# ~/.my.cnf to set user-specific options.
#
# In this file, you can use all long options that a program supports.
# If you want to know which options a program supports, run the program
# with the "--help" option.

# The following options will be passed to all MySQL clients
[client]
#password = your_password
port = 3306
socket = /tmp/mysql.sock

# Here follows entries for some specific programs

# The MySQL server
[mysqld]
port = 3306
socket = /tmp/mysql.sock
skip-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M

# Replication Master Server (default)
# binary logging is required for replication
log-bin=mysql-bin

# binary logging format - mixed recommended
binlog_format=mixed


server-id = 1


[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates

[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
...全文
7256 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
believe_me 2010-11-08
  • 打赏
  • 举报
回复 1
# lsof | grep mysql | wc -l
254
同时
table_open_cache 值为 256
应该不存在打开文件过多的问题。
yuwenbao 2010-11-08
  • 打赏
  • 举报
回复
用lsof 跟一下你的mysql
believe_me 2010-11-08
  • 打赏
  • 举报
回复
补充一下系统信息啊:
Linux 2.6.9-42.ELsmp
64位
CPU: Intel(R) Xeon(R) CPU E5405 @ 2.00GHz
believe_me 2010-11-08
  • 打赏
  • 举报
回复
mysql> show processlist;
+------+----------+---------------------+--------------------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+------+----------+---------------------+--------------------+---------+------+-------+------------------+
| 803 | monitor | 122.11.48.133:34882 | dn_monitor | Sleep | 223 | | NULL |
| 1113 | monitor | 122.11.48.138:45172 | dn_monitor | Sleep | 4 | | NULL |
| 1114 | monitor | 122.11.48.138:45173 | dn_monitor | Sleep | 4 | | NULL |
| 1115 | iamadmin | 127.0.0.1:35192 | dn_monitor | Sleep | 19 | | NULL |
| 1116 | iamadmin | 127.0.0.1:35193 | dn_monitor | Sleep | 19 | | NULL |
| 1117 | iamadmin | 127.0.0.1:35194 | dn_monitor | Sleep | 19 | | NULL |
| 1118 | iamadmin | 127.0.0.1:35195 | dn_monitor | Sleep | 19 | | NULL |
| 1119 | iamadmin | 127.0.0.1:35196 | dn_monitor | Sleep | 19 | | NULL |
| 1120 | monitor | 58.221.148.162:1899 | information_schema | Sleep | 1355 | | NULL |
| 1451 | root | localhost | NULL | Query | 0 | NULL | show processlist |
+------+----------+---------------------+--------------------+---------+------+-------+------------------+
10 rows in set (0.00 sec)

session看上去没太大的异常啊
ACMAIN_CHM 2010-11-08
  • 打赏
  • 举报
回复
先检查一下你的SESSION数,是不是有太多并发连接了?
曾经的阿飞 2010-11-08
  • 打赏
  • 举报
回复
你使用innodb的话应该设置innodb_buffer_pool参数,否则的话将key_buffer_size设置到内存的%80左右
rucypli 2010-11-08
  • 打赏
  • 举报
回复
msyql占用内存大概就是innodb的缓存+myisam缓存+每个连接占用内存乘以连接数
believe_me 2010-11-08
  • 打赏
  • 举报
回复
很惭愧
刚弄清楚,系统的8G内存并不是被mysql吃掉的。
只是被系统给cached起来了。
mysql实际上占用的内存只有300多个M。
rucypli 2010-11-08
  • 打赏
  • 举报
回复
你是怎么确定8G内存被用完了
believe_me 2010-11-08
  • 打赏
  • 举报
回复
在运行过程中查看top信息,发现cached在不断的增大。
请教会不会是由于频繁的数据插入导致的?
限时福利1:购课进答疑群专享柳峰(刘运强)老师答疑服务 为什么需要掌握高性能的MySQL实战? 由于互联网产品用户量大、高并发请求场景多,因此对MySQL的性能、可用性、扩展性都提出了很高的要求。使用MySQL解决大量数据以及高并发请求已经是程序员的必备技能,也是衡量一个程序员能力和薪资的标准之一。 为了让大家快速系统了解高性能MySQL核心知识全貌,我为你总结了「高性能 MySQL 知识框架图」,帮你梳理学习重点,建议收藏! 【课程设计】 课程分为四大篇章,将为你建立完整的 MySQL 知识体系,同时将重点讲解 MySQL 底层运行原理、数据库的性能调优、高并发、海量业务处理、面试解析等。 一、性能优化篇: 主要包括经典 MySQL 问题剖析、索引底层原理和事务与锁机制。通过深入理解 MySQL 的索引结构 B+Tree ,学员能够从根本上弄懂为什么有些 SQL 走索引、有些不走索引,从而彻底掌握索引的使用和优化技巧,能够避开很多实战中遇到的“坑”。 二、MySQL 8.0新特性篇: 主要包括窗口函数和通用表表达式。企业中的许多报表统计需求,如果不采用窗口函数,用普通的 SQL 语句是很难实现的。 三、高性能架构篇: 主要包括主从复制和读写分离。在企业的生产环境中,很少采用单台MySQL节点的情况,因为一旦单个节点发生故障,整个系统都不可用,后果往往不堪设想,因此掌握高可用架构的实现是非常有必要的。 四、面试篇: 程序员获得工作的第一步,就是高效的准备面试,面试篇主要从知识点回顾总结的角度出发,结合程序员面试高频MySQL问题精讲精练,帮助程序员吊打面试官,获得心仪的工作机会。

56,681

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧