请帮我调整我的 php5-fpm 和 nginx 配置。
问题是我的 php5-fpm 日志不断报告缓慢的脚本并杀死一个子线程。
专用服务器,四核至强,32Gb 内存。1 个 php 应用程序/站点正在运行。
Php 应用程序:坚果壳,搜索引擎,结果触发 curl 请求。每次搜索页面加载时间通常为 2 - 3 秒。
这是我认为正在发生的事情:
我有 750 个并发 php 用户在执行搜索。pm.max_children = 400
由于 RAM 限制,我只能设置。我假设每个用户(子线程)有 50Mb,所以 = 20GB。我假设每个用户 = 1 个子线程。因此,pm.max_children
这不足以涵盖 750 个需要 3 秒进行搜索的活跃 php 用户。
所以我想我看到用户排队是因为我看到 3 秒变成了 4 - 7 秒。当用户排队时,我认为脚本越来越慢会触发错误日志消息,而 php5-fpm pm 会杀死孩子吗?
这就是我认为正在发生的事情。我在下面提供了我的错误日志输出、nginx、php5-fpm 配置。
如果我可以调整我的配置,并且确实pm.max_children
应该至少等于您的最大并发用户数,我真的很感激任何建议,请记住,我的 php 搜索打开了大约 3 秒。我需要更多的内存还是额外的服务器?
这是我的记忆,但我在大约 30 分钟前才重新启动了 nginx
:/var/log# free -m
total used free shared buffers cached …
Run Code Online (Sandbox Code Playgroud) 我很想利用 varnish 的强大功能来缓存我的 php 密集型应用程序,该应用程序每天为大约 40 万人提供服务。
该应用程序通过触发多个卷曲 XML 的线程来获取搜索数据,因此您可以想象新线程会产生很多,并且这些线程会保持打开状态几秒钟,从而使页面加载几秒钟。
每个搜索结果页面的缓存将大大加快用户体验。
所以这是我问题的基础。
我们的搜索结果页面需要转换代码跟踪。所以用户来自source/referer A,到我们的页面domain.com/search/?q=something&source=A,选择合适的转换跟踪代码(与referer A相关)输出到页面。Cookie 也会被删除,因此用户下次返回页面时会检查 cookie 是否存在,如果存在,则选择在 HTML 中显示正确的转换代码。
通过这种方式,转换跟踪在会话中和会话外工作。
问题是,鉴于我们对 cookie 要求的了解,是否可以在这种情况下使用 varnish 进行缓存?我们能否以某种方式配置 VCL 来处理这些 cookie,如果可以,我们应该写什么?
谢谢