gpt4 book ai didi

php - 生成的 Postgresql 进程可以由 spawner PHP 脚本控制吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:41:19 24 4
gpt4 key购买 nike

我有一个 PHP CLI 脚本,它处理一个 csv 文件,将其内容插入到 Postgresql 数据库中的一个表中。这是在 Ubuntu 服务器上。我使用 schedtool 来控制整个脚本的亲和性。 Schedtool 用于通过 -e 选项启动脚本本身。不幸的是,对于 htop,我看到数据库线程是作为一个完全不同的线程生成的,并且不受关联选项的影响。

是否有可能以某种方式使数据库进程从 spawner PHP 脚本继承所有关联选项?


我刚刚找到了答案——因为我正在阅读一些 Ruby 的 Postgresql 示例文件:)。

我最好的选择是使用 NOTIFY - LISTEN 获取运行当前脚本的 Postgresql 线程的非常准确的 PID。正如 [depesz] 告诉 Postgres 的那样,它只使用 1 个核心。使用 schedtool 我仍然可以控制它在哪个内核上运行,使用 cpulimit 我可以进一步控制它。

最佳答案

Postgres 不使用线程。每个连接都由一个单线程进程处理。所以,一个连接只能使用一个核心。尽管操作系统可能会将其移动到不同的内核,但它一次只会使用一个内核。

如果你坚持 nicing postgres,"SELECT pg_backend_pid()"会给你 postgres 进程的 PID,没有任何 NOTIFY/LISTEN 东西。虽然,一般来说,您不想尝试优化 postgres 进程。您可能会导致其他更高优先级的进程阻塞。那么您认为是低优先级的进程就不再是低优先级了。

如果您只是从 csv 文件中插入大量内容,那么优化您的脚本可能不会有太大帮助。 Postgres 可能正在做更多的工作,而且它可能是 IO,所以再一次,nicing 可能不会给你带来太多。但是,您可以偶尔睡一觉。插入50毫秒,睡一会,……

关于php - 生成的 Postgresql 进程可以由 spawner PHP 脚本控制吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/929480/

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