[错误] core:archive 将 cron/flock 包装程序错误地计为并行归档程序
发生了什么事?
当核心:存档 ' 由包有锁定 ' 和外壳过程的克龙工作执行时,Matomo错误地将包装过程算作单独的并行归档器。
curon 任务创建了类似于以下的流程树:
页:1 /宾/什
/usr/bin/锁定
/宾/巴什
php83./matomo/收音机核心:存档
只有最终的PHP过程是实际的Matomo存档器.
然而,在"core/CronArchive.php"中,"hasreachedMaxConcynArchivers (")"计数了命令行同时包含以下两个内容的每个过程:
翻译:
strpos( $ process, 'Core: archive') !=====================================================================================================================
strpos( $ process, "Console" ) ! === 错误由于母体外壳和 " flock " 进程在它们的论点中包含完整的子命令,所以所有四个进程都吻合.
因此,Matomo报告说:
页:1 存档将停止,因为4个归档器已经运行,最多3个应该马上运行。 允许达到最大并行归档器(3),中止运行.
直接从壳中执行的同一`核心:存档'命令正常运行并报告:
页:1
目前运行的3个归档器中有1个这发生在Hetzner的东道主身上,经常的克龙工作被 " 锁 " 包裹和保护,以防止重叠的处决。
关于赫兹纳的克通/克通要求的相关讨论: https://GitHub.com/contao/contao/issues/9404 (中文(简体) ).
发生了什么事?
单一的核心:存档 ' 援引应算作一个同时存档者,而不论它是通过cron'、`flock ' 或外壳包装过程开始的。
Matomo应当将实际的PHPcore:archive'进程与上级进程区分开来,前者的命令行参数仅包含console core:archive'文本。
当前的行为阻止了计划报告归档的运行,尽管只有一个真正的Matomo归档器存在.
作为一种工作,将实际的“核心:存档”命令移入一个单独的可执行的外壳脚本,并且只执行“flock”脚本,使包装程序无法包含“核心:存档”。
如何复制?
配置一个“ 核心: archive” 通过“ flock” 和外壳执行的嵌入工作, 例如 :
时间轴 05 * * * * * '/usr/bin/flock' -n-E 0'/path/to/archive.lck'"/bin/bash"-c"/usr/bin/php/path/to/matomo/console核心:archive-url="https://stats.example.com/". (原始内容存档于2018-09-21) (英语). Path/to/matomo-archive.log'
当 cron 任务运行时, 检查匹配进程 :
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
ps -eo pid, ppid, args QQ grep'core: archive' QQ grep' console" (中文(简体) ).就我们而言,处决的结果是:
页:1 80572 80569 /bin/sh-c'/usr/bin/flock". "/bin/bash"-c"/usr/bin/php./matomo/console 核: archive." 80575 80572 /usr/bin/flock. /bin/bash-c/usr/bin/php./matomo/console核心:有. 80577 80575 /bin/bash-c/usr/bin/php./matomo/console核心:archive. 80580 80577 php83. /matomo/consele 核:archive.
只有一个实际的PHP存档器,但所有四个命令行都包含"主干:archive".
马多莫
. . . . . . .内容来源: matomo-org/matomo