当我们在代码中使用如下所示的 ini_set 时,所有其他代码的内存限制是否相同?或者仅对我们添加的代码有效?
ini_set('memory_limit', '512M');
谢谢
我仅将资源分配给 1 个 pod,内存为 650MB/30%(使用其他内置 pod,限制内存仅为 69%)
但是在pod处理过程中,pod的使用率在650MB以内,但是node的整体使用率为94%。
为什么会发生,因为它的上限应该是 69%?是不是因为其他内置的 pod 没有设置限制?如果内存使用率 > 100%,有时我的 pod 会出错,如何防止这种情况发生?
我的分配设置 ( kubectl describe nodes
):
Kubernetes Node 和 Pod 空闲时的内存使用情况:
kubectl top nodes
kubectl top pods
运行任务时 Kubernetes Node 和 Pod 的内存使用情况:
kubectl top nodes
kubectl top pods
进一步测试的行为:
1. 在命名空间test-ns下准备部署、pods 和服务
2. 由于只有kube-system和test-ns有 pods,所以分配 1000Mi 给它们每个 (from kubectl describe nodes
) 目标是小于 2GB
3. 假设内存在kube-system和test-ns 中使用将小于 2GB 小于 100%,为什么内存使用率可以是 106%?
在.yaml …
我试图在我的数据库中插入~20K记录时遇到了问题.我注意到即使我在foreach循环中回显,我也没有在命令行中输出任何内容.相反,我插入~9440有关...的记录后出错
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 91 bytes) in /Users/me/Sites/Laravel/database/connection.php on line 293
这是我的代码(尝试使用Eloquent和Fluent):
<?php
class Process_Controller extends Base_Controller
{
public function action_migrate()
{
$properties = DB::table('raw_properties')->get('id');
$total = count($properties);
foreach ($properties as $x => $p) {
$r = RawProperty::find($p->id);
$count = $x + 1;
$prop_details = array(
'column' => $r->field,
// Total of 21 fields
);
DB::table('properties')->insert($prop_details);
echo "Created #$count of $total\n";
}
}
}
Run Code Online (Sandbox Code Playgroud) 我一直在尝试增加MAMP(Mac OSX)中的php memory_limit.我使用的PHP版本是5.4.1.0.我已经阅读了有关为MAMP Pro创建新模板的信息,但我正在使用标准版本的MAMP.
我已经尝试了以下所有内容,但似乎没有任何效果.任何帮助将非常感激.
感谢您的时间.
php_value memory_limit 128M
Run Code Online (Sandbox Code Playgroud)
我在以下文件中将以下内容从32M更改为128M:
/Applications/MAMP/conf/php5.4.10
memory_limit = 128M
;
然后我完全退出MAMP并重新启动它,但在MAMP phpInfo中它仍然显示:
memory_limit 32M
虚拟主机
我正在使用虚拟主机来设置我自己的URL.我在某处读到可能需要增加内存限制.所以我把它添加到'php_value memory_limit 128M':
/Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot /Applications/MAMP/htdocs
ServerName localhost
php_value memory_limit 128M
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
并降低相关站点配置中的同一文件:
<VirtualHost *:80>
DocumentRoot "/Users/Username/Dropbox/Dev/sitename.dev"
ServerName sitename.dev
php_value memory_limit 128M
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
(顺便说一下,我把我的MAMP文件夹(Dev)保存在Dropbox中,它工作正常)
php.ini中
我还在我的站点目录的根目录和我的MAMP目录的根目录中添加了一个php.ini文件,其中包含以下内容:
memory_limit = 128M
Run Code Online (Sandbox Code Playgroud) 给定一个已启动的具有内存限制的Docker 容器,我想知道是否可以检测到何时强制实施该内存限制,从而使该容器即将崩溃,因为它的内存不足。是否有一些我可以捕获的信号?或者我可以轮询一些日志文件?事后检测到这一点,即使延迟几分钟仍然有用
我需要从Apache Web服务器提供大文件(> 2gb).这些文件是受保护的下载,因此我需要某种方式来授权用户.我正在使用的CMS使用针对MySQL数据库检查的cookie来验证用户.在服务器上,我无法控制max_execution_time,并且无法控制memory_limit.
我的技术一直在为小文件工作.在用户(通过CMS)授权用户之后,我使用readfile()来提供文件,该文件存储在文档根目录上以防止直接访问.我已经阅读了关于下载或使用fpassthru来绕过PHP内存限制的技术.但我还没有找到一种技术来绕过max_execution_time限制.
我考虑过将文件存储在文档根目录中,因此我们可以完全绕过PHP.但我无法弄清楚如何使用htaccess限制访问.在我可以为文件提供服务之前,我需要针对数据库验证用户.
谢谢.
我遇到了崩溃的ION-Cube模块的问题.该模块将csv数据导入我们的数据库,但如果csv文件为大(15 + M),则结果是内部服务器错误.
支持人员告诉我,我的服务器没有足够的RAM来运行模块.服务器内置了1GB的RAM,所以我写了一个简单的测试脚本来检查ini_set是否有效.
<pre>
<?php
function tryAlloc($megabyte){
echo "try allocating {$megabyte} megabyte...";
$dummy = str_repeat("-",1048576*$megabyte);
echo "pass.";
echo "Usage: " . memory_get_usage(true)/1048576;
echo " Peak: " . memory_get_peak_usage(true)/1048576;
echo "\n";
}
for($i=10;$i<1000;$i+=50){
$limit = $i.'M';
ini_set('memory_limit', $limit);
echo "set memory_limit to {$limit}\n";
echo "memory limit is ". ini_get("memory_limit")."\n";
tryAlloc($i-10);
}
?>
</pre>
Run Code Online (Sandbox Code Playgroud)
这没有任何问题.这次测试有什么重大缺陷吗?我们在使用此模块时遇到了很多麻烦,并且支持人员一直告诉我们问题是我们的服务器.-.-
PS:不,我无法访问php.ini.不,我不能使用.htaccess来设置内存限制.不,我无法编辑修复/调试模块.
我最近遇到了内存分配问题,所以我开始尝试使用ini_set('memory_limit', value);
指令,我尝试输入值incrementaly.现在,通过网络搜索(和SO)我发现我可以把它-1
作为value
.所以,我做了,现在脚本完全运行到最后而不会中断(在我以前得到内存分配错误之前).
然而,我不明白的是,在脚本文件末尾给出这两行:
$mem = memory_get_peak_usage(true);
echo "Peak mem. usage: <b>" . round($mem / 1024 / 10124, 2) . "</b> MB";
Run Code Online (Sandbox Code Playgroud)
产生大约10.8MB,当我调查时,/var/log/messages
我可以看到这一行:
Nov 21 13:52:26 mail suhosin[1153]: ALERT-SIMULATION - script tried to increase
memory_limit to 4294967295 bytes which is above the allowed value (attacker
'xx.xxx.xxx.xxx', file '/var/www/html/file.php', line 5)
Run Code Online (Sandbox Code Playgroud)
这意味着脚本试图安排4096MB!
怎么会这样?而且,最让我感兴趣的是为什么在这种情况下脚本执行没有停止?是因为ini_set('memory_limit', '-1');
?我的意思是,我没有读到,将-1
作为value
下不推荐,我知道问题出在脚本(在内存中一次读取数据的太大量),我会去和顺序读取修复它,但我我只是对这些数据差异感到困惑,所以如果有人能够对它有所了解,我将不胜感激.
我们有一台运行64位Ubuntu 12.04的服务器,它服务于在虚拟环境下运行的django应用程序,以及一个芹菜工作者.问题是服务器中没有进程使用超过2GB的内存.系统中有8GB内存,4GB交换.该图表显示该过程受到某些因素的限制
我们没有做任何事情来强制执行32位或任何东西的运行进程.我还应该注意,django和芹菜都由主管进程管理器监控newrelic-client
,我不知道这些是否与内存限制有关.
为什么celery进程不需要分配更多的内存?
系统:Ubuntu 12.04 64位
客户端:Django应用程序(2 GB)
RAM:8 GB
交换:4 GB
我尝试用PHP创建数组.阵列的尺寸是26000 x 26000.是否可以使阵列变大?我已经尝试制作尺寸为10000 x 10000的数组,但程序一直告诉我:
致命错误:第24行的C:\ xampp\htdocs\matrix\index.php内存不足(分配1886388224)(试图分配24个字节)
我有8GB内存,我已经在php.ini中设置了memory_limit -1(apache配置).构建数组的代码是这样的:
function zeros($rowCount, $colCount)
{
$matrix = array();
for ($rowIndx=0; $rowIndx<$rowCount; $rowIndx++)
{
$matrix[] = array();
for($colIndx=0; $colIndx<$colCount; $colIndx++)
{
$matrix[$rowIndx][$colIndx]=0;
}
var_dump(memory_get_usage());
}
return $matrix;
}
$matrix = zeros(25000,25000);
Run Code Online (Sandbox Code Playgroud)
我也尝试过使用SplFixedArray,但结果是一样的.请帮帮我,谢谢!:)
memory-limit ×10
php ×7
.htaccess ×1
apache ×1
arrays ×1
azure-aks ×1
django ×1
docker ×1
fatal-error ×1
kubernetes ×1
laravel ×1
large-files ×1
mamp ×1
memory ×1
nodes ×1
python ×1
ubuntu ×1