mysqld-nt: Out of memory (Needed 1677720 bytes)解决方法

http://www.jb51.net/article/58726.htm

今天发现网站有点慢,发现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就可以了。

时间: 2024-12-21 02:31:39

mysqld-nt: Out of memory (Needed 1677720 bytes)解决方法的相关文章

rpm包安装过程中依赖问题“libc.so.6 is needed by XXX”解决方法

rpm包安装过程中依赖问题"libc.so.6 is needed by XXX"解决方法 折腾了几天,终于搞定了CentOS上的Canon LBP2900打印机驱动.中间遇到了一些问题,主要是安装rpm包出现的依赖问题,费尽周折总算是解决了.现在简单总结一下. 首先说明一下,我用的CentOS版本是6.6,64位.打印机驱动程序是两个rpm安装包:cndrvcups-common-2.60-1.x86_64.rpm和cndrvcups-capt-2.60-1.x86_64.rpm.

MYEclipse Available Memory is low 警告 解决方法

1,  设置Eclipse内存使用情况 修改eclipse根目录下的eclipse.ini文件 -vmargs  //虚拟机设置 -Xms40m -Xmx256m -XX:PermSize=128M //非堆内存设置     -XX:MaxPermSize=256M -vmargs -Xms128M -Xmx512M -XX:PermSize=256M -XX:MaxPermSize=512M 2,  JVM内存设置 打开eclipse  window-preferences-Java -Ins

ORA-27100 shared memory realm already exists错误解决方法

环境:win 2003   + oracle 10g win 2003服务器物理内存4G oracle10g SGA             1504M 事故背景: 调整SGA大小,因为OS的内存只有4G,建议SGA的大小不要超过60%,我调整为2G SQL> alter systemset sga_max_size=2000m scope=spfile; 重启数据库报错ORA-27100 shared memory realm already exists 分析原因:对于32位机器ORACLE

mysql:1153 Got a packet bigger than ‘max_allowed_packet’ bytes的解决方法

备份还原或数据导入报错1153:Got a packet bigger than'max_allowed_packet'bytes的问题 这个问题可以有2个解决方法: 1.临时修改: mysql>set global max_allowed_packet=524288000; #修改 512M 2.修改my.cnf(windows下my.ini),需重启mysql.在 [MySQLd] 部分添加一句(如果存在,调整其值就可以):max_allowed_packet=256M (根据实际情况调整数

[php错误]PHP中Notice: unserialize(): Error at offset of bytes in on line 的解决方法

使用unserialize函数将数据储存到数据库的时候遇到了这个报错, 后来发现是将gb2312转换成utf-8格式之后, 每个中文的字节数从2个增加到3个之后导致了反序列化的时候判断字符长度出现了问题, 所以需要使用正则表达式将序列化的数组中的表示字符长度的值重新计算一遍,代码如下: function mb_unserialize($serial_str) { $out = preg_replace('!s:(\d+):"(.*?)";!se', "'s:'.strlen(

Myeclipse运行报错:an out of memory error has occurred的解决方法

不知道怎么了,重装的myeclipse2013,里边就放了一个项目,启动myeclipse就报 an out of memory error has occurred....... 一点yes就退出 解决方法: 修改 myeclipse安装目录下的 myeclipse.ini 文件,修改 java的内存分配 myeclipse.ini 文件中 java堆内存的定义 -Xms128m 表示JVM Heap(堆内存)初始分配,128MB.            -Xmx512m 表示JVM Heap

virtual memory exhausted: Cannot allocate memory 解决方法

在阿里云买了个云服务器,内存1G.编译kudu时出现下面的错误: virtual memory exhausted: Cannot allocate memory 问题原因:由于物理内存本身很小,且阿里云服务器并没有分配swap空间,当物理内存不够用时, 物理内存中暂时不用的内容没地方转存. 解决方法:手动分配一个swap空间 dd if=/dev/zero of=/swap bs=1024 count=1M    #创建一个大小为1G的文件/swap             mkswap /s

【Error】Python:UnicodeDecodeError: ‘XXX' codec can't decode bytes in position... 解决方法

错误信息: UnicodeDecodeError: 'XXX' codec can't decode bytes in position 2-5: illegal multibyte sequence 这是因为遇到了非法字符,因此在转码的过程中出现了异常.具体哪些字符是非法字符我也搞不清. [解决办法] #将获取的字符串strTxt做decode时,指明ignore,会忽略非法字符,这样就可以了 inStr2 = inStr.decode('utf-8', 'ignore') [补充] 默认的参

NT AUTHORITY\IUSR登录失败解决方法

NT AUTHORITY\IUSR登录失败解决方法 1 今天打开网站时,突然报这个错误,平时都好好的 2 3 Cannot open database "aslkm" requested by the login. The login failed. Login failed for user 'NT AUTHORITY\IUSR'. 4 我的连接字符串是这样的,用的是 Windows 身份验证登录: 5 6 data source=.\SQLEXPRESS;initial catal