【发布时间】:2019-01-29 13:45:41
【问题描述】:
我们的自定义 php-buildpack 在 cloudfoundry 容器中运行。 问题是 apache start -> php-fpm (这里共享内存代码运行良好)。 php-fpm exec() 启动的 php 脚本 -> php-cli(它在共享内存代码上核心转储)。
对于共享内存,我们使用 boost-1.56.0 示例:-
<?php
exec("php anotherscript.php");
?>
另一个脚本.php
<?php
custom extention call i.e c/c++ code
?>
=========== sample.cpp(使用 boost 创建共享内存)
permissions perms;
perms.set_unrestricted();
managed_shared_memory segment(create_only, SharedDataShmSegmentName, segmentSize, 0, perms);
interprocess_sharable_mutex *mutex= segment.construct<interprocess_sharable_mutex>(SharedDataShmMutexName)();
它将核心转储为 -
Signal 11 (segmentation fault)(core dumped)
我们怀疑子 exec() 将拥有比主进程更少的权限,或者子 exec() 将没有像 CAP_IPC_LOCK 功能那样的共享内存权限。
由 exec() 创建的 Cloudfoundry 容器子进程是否存在共享内存(boost - 1.56.0)问题?
【问题讨论】:
-
您尝试为每个容器分配多少共享内存?
-
共享内存的默认值。对于主内存,我们在 manifest.yml 中给出内存:200M。
标签: php c++ cloud-foundry boost-interprocess