gpt4 book ai didi

php - PHP脚本至少需要Kubernetes上ram数量的3倍

转载 作者:行者123 更新时间:2023-12-02 11:42:25 24 4
gpt4 key购买 nike

我正在使用PHP在Kubernetes上运行一些计划的命令。

在本地docker上运行命令时,PHP RAM的使用至少比Kubernetes少70%。

我在本地和Kubernetes上都使用了相同的Docker镜像。

一个示例脚本:

<?php

use Symfony\Component\Process\Process;

require __DIR__ . '/vendor/autoload.php';

$remotePath = 'https://server/file.csv'; // Around 150MB

function downloadViaCurl($remotePath)
{
$commandline = sprintf(
'curl -o %s %s',
'/tmp/file.csv',
$remotePath
);

$process = new Process($commandline);
$process->disableOutput();
$process->setTimeout(null);
$process->run();
}

downloadViaCurl($remotePath);

$memory = memory_get_peak_usage(true) / 1000000;
echo sprintf("Used %.2fMB of RAM" . PHP_EOL, $memory);

本地Docker的输出:

Used 2.10MB of RAM



K8S上的输出:

Used 6.29Mb of RAM



可以在 https://github.com/InFog/memory_issues上找到Dockerfile和job.yaml

最佳答案

我发现了问题。

1-K8S部署将应用程序设置为开发模式。这是一个使用Doctrine ORM的Symfony应用程序。 Doctrine ORM的分析处于 Activity 状态,这使其能够收集内存中的所有查询,从而大大增加了所需的内存量。对于运行多达一百万个查询的长时间运行的进程,它使用的内存约为500MB,将其更改为未配置文件后,其使用的内存少于30MB。

经验教训:始终检查生产参数。

2-第二个问题:cronjob每次运行K8S都会运行一个没有Symfony缓存的新容器。这也将影响内存使用。我通过在将镜像推送到注册表之前预热Symfony缓存来解决此问题。

关于php - PHP脚本至少需要Kubernetes上ram数量的3倍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62191070/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com