关于ubuntu环境下的mysql错误:
重启mysql后,大概半小时后,又不断报错,再次重启mysql报错;
根据以上错误提示,分别使用systemctl status mysqld.service和journalctl -xe查看服务启动失败的原因:
通过上面也没发现导致mysql启动错误的关键原因:
然后查看开MySQL的错误日志,我的错误日志在 /var/log/mysql 目录下
通过以上日志,可以看到Cannot allocate memory for the buffer pool,这是因为MySQL内存不足导致启动失败,
查询内存的命令:
解决方法:
增加swap交换空间解决问题:
增加自动挂载:
在文件/etc/fstab中加入 /swapfile swap swap defaults 0 0
在下面添加 /swapfile swap swap defaults 0 0
重启mysql
重启后问题解决。
今天发现网站有点慢,发现mysql日志中提示mysqld-nt:Out
of
memory
(Needed
1677720
bytes),经排查是由于最近调整了mysql的一些参数导致,以为内存大就不怕了,32位系统真心内容利用率很低,据说不超过4G,我们的32G内存真浪费了,以后还是使用win2008
r2或centos系统做服务器吧。废话不多说下面为大家分享下解决方法:
因为mysql版本不同可能配置略有区别,主要就是设置如下参数
key_buffer、key_buffer_size、read_buffer_size、sort_buffer_size记住了有这个参数的就改,没有也不要添加。修改后一般是降低,然后重启mysql服务即可。
核心提示:检查mysqld配置my.conf,着重看key_buffer_size,
max_heap_table_size,
tmp_table_size几个参数,推荐设置key_buffer_size值为max_heap_table_size的1/4.
因为服务器内存而大富余比较多,前些天把my.conf里的好几个参数调得相当大,1G甚至2G,但并不稳定,mysqld报出过几次Out
of
memory
(Needed
xxx
bytes)这样的错误,分析原因时,想到是32位linux系统上的linux不支持PAE,不能使用超过3G以上的内存,所以把改大的几个参数适当改小了点,最大也只有几百M的样子,但还是出现过几次Out
of
memory错误。于是网上多方查询,后来受到公式
key_buffer_size
+
(read_buffer_size
+
sort_buffer_size)*max_connections
的启发,两次检查了key_buffer_size,
max_heap_table_size,
tmp_table_size几个参数,发现这三个值的设置是一样的,竟然都是512M!
于是改小key_buffer_size到128M,重启mysqld接下来5个小时的监测,没有再发生类似错误。
改了这几个参数后,还是有一条是Out
of
memory
,继续检查,发现innodb_buffer_pool_size
=
1512M,于是我改为1000M,再启Mysql居然好了。
注:这台服务器一共了才3G内存:最终大至如下
key_buffer
=
200M
key_buffer_size
=
1294963200
#max_join_size
=
4294967295
max_join_size
=
1294967295
max_allowed_packet
=
1M
#table_open_cache
=
512
table_cache
=
512
sort_buffer_size
=
2294967295
read_buffer_size
=
2147479552
#write_buffer_size
=
4294967295
read_rnd_buffer_size
=
4M
myisam_sort_buffer_size
=
64M
thread_cache_size
=
8
query_cache_size=
16M
php错误Fatal
error:
Out
of
memory
(allocated
262144)
(tried
to
allocate
19456
bytes
php运行一段时候后出现错误:
php错误Fatal
error:
Out
of
memory
(allocated
262144)
(tried
to
allocate
19456
bytes
意思是说:致命错误,超出内存,已经分配allocated
262144,尝试分配19456
字节。
解决方法是修改php.ini,加大memory_limit
刚刚着实吓我一跳,html可以正常访问,php不行,我还以为是受攻击呢。
后来看到www.blogguy.cn
上不去了Fatal
error:
Out
of
memory
(allocated
262144)
(tried
to
allocate
19456
bytes,知道是内存不足导致的,可是vps也连不上去,也看不到到底是谁在占内存,只能进网站后台重启vps,就不知道问题出在哪儿了。记录下来备案!
修改方法
修改php.ini
如下的区域
max_execution_time
=
120
Maximum
execution
time
of
each
script,
in
seconds
max_input_time
=
60
Maximum
amount
of
time
each
script
may
spend
parsing
request
data
memory_limit
=
64M
Maximum
amount
of
memory
a
script
may
consume
(64MB)
根据需要调整。
重启一下apache就可以了。
无法连接到 MySQL 服务器,可能的情况为:
1、MySQL 服务没有启动,一般是在异常的情况下 MySQL 无法启动导致的,比如无可用的磁盘空间,my.ini 里 MySQL 的 basedir 路径设置错误等;
2、MySQL 服务器资源紧张,导致无法连接。
拓展资料:
使用说明
1.如果是用 MySQL + Apache,使用的又是 FreeBSD 网络 *** 作系统的话,安装时候你应按注意到FreeBSD的版本问题,在 FreeBSD 的 3.0 以下版本来说,MySQL Source 内含的 MIT-pthread 运行是正常的,但在这版本以上,你必须使用 native threads,也就是加入一个 with-named-thread-libs=-lc_r 的选项。
2.如果在 COMPILE 过程中出了问题,请先检查你的 gcc版本是否在 2.81 版本以上,gmake 版本是否在3.75以上。
3.如果不是版本的问题,那可能是你的内存不足,请使用 ./configure--with-low-memory 来加入。
4.如果要重新做你的 configure,那么你可以键入 rm config.cache 和 make clean 来清除记录。
5.把 MySQL 安装在 /usr/local 目录下,这是缺省值,您也可以按照你的需要设定你所安装的目录。
服务无法启动
1、首先,查看MySQL的服务是否存在。如果不存在需要先安装服务。安装服务的方法是进入MySQL Server的安装目录,找到bin目录,然后找到文件mysqld.exe,使用命令行运行 mysqld --install MySQL57 安装服务(如果不成功尝试使用管理员方式运行,MySQL57是服务的名字,默认是MySQL)。
2、如果上述方法安装服务失败,则可采用下述方法安装(成功则跳过此步)。搜索程序“regedit.exe”,即注册表编辑器,打开后找到 “计算机”——"HKEY_LOCAL_MACHINE"——“SYSTEM”——“CurrentControlSet”——“Services”,然后在该目录下新建项MySQL57(服务的名字)即可成功建立项目。
3、找到新建的项,然后可以看到其中有ImagePath这一项,这其实是可执行文件的路径。因为MySQL服务是需要靠mysqld这个命令来启动的,所以检查下ImagePath的路径是否正确。路径错误导致启动服务时报错—“无法找到文件”。
4、修改ImagePath的内容为正确的路径值,正确的值是"D:\MySQL\MySQL Server 5.7\bin\mysqld" --defaults-file="D:\MySQL\MySQL Server 5.7\my.ini" MySQL 是这种形式的,对照一下,如果路径不对,修改过来。
5、重启计算机,再次启动服务,并可以成功运行MySQL服务。
参考资料:百度百科:mySQL
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)