目前我的硬限制为130688字节.如果我尝试在一条消息中发送更大的内容,我会收到ENOBUFS错误.
我检查了net.core.rmem_default,net.core.wmem_default,net.core.rmem_max,net.core.wmem_max和net.unix.max_dgram_qlen sysctl选项并将它们全部增加但是它们没有效果,因为它们处理了总缓冲区大小不是邮件大小.
我还设置了SO_SNDBUF和SO_RCVBUF套接字选项,但这与上面的问题相同.无论如何,默认套接字缓冲区大小都是根据_default套接字选项设置的.
我已经查看了在套接字堆栈中返回ENOBUFS的内核源代码,但我不清楚它来自何处.似乎只返回此错误的地方与无法分配内存有关.
最大尺寸实际上是130688吗?如果不能在没有重新编译内核的情况下进行更改?
谢谢!
我有一个旧的代码库,广泛使用GD(不,切换到imagemagick不是一个选项).它已经运行了几年,通过几个版本.但是,当我在当前的开发环境中运行它时,我遇到了一个神秘的gd-png错误:调用时无法分配图像数据错误imagecreatefrompng().我正在使用的PNG文件与我一直使用的相同,所以我知道它有效.
目前的设置:
Ansible-provisioned vagrant box
Ubuntu 14.04
PHP 5.5.9
GD 2.1.1
libPNG 1.2.50
Run Code Online (Sandbox Code Playgroud)
脚本运行时PHP的内存限制为650M,尽管最终内核本身最终会破坏脚本,并且更改PHP的内存限制似乎没有效果.
图像尺寸为7200x6600,磁盘上约为500KiB.这在我的其他环境中不是问题,只是在我的开发环境中新出现.不幸的是,我不再能够访问其他环境来进行比较了,尽管在上一个工作中的设置类似--Ubuntu 14.04,PHP 5.5,足够的内存分配.
在此设置中可能发生的事情在我之前的设置中没有发生?我怎样才能解决这个问题?