首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >弹力豆杆-滚动展开问题。意外停机时间

弹力豆杆-滚动展开问题。意外停机时间
EN

Stack Overflow用户
提问于 2021-07-28 09:04:15
回答 1查看 152关注 0票数 1

我们刚刚将弹性豆茎环境从运行在64位Amazon 上的PHP7.3迁移到运行在64位Amazon 2上的PHP7.4,我们看到以下错误:

当使用滚动部署策略将代码部署到环境中时,

  • 会在服务器重新开始工作之前得到3-4秒502坏网关。在上一代Linux.

中,我们没有看到这种停机现象。

  • 还:应用程序负载均衡器清除所有会话并签出所有用户,即使使用负载均衡器生成的cookie启用了粘性。在上一代Linux.

中,我们没有看到这种粘性问题。

发生在阿帕奇和尼克斯身上。

对如何解决这个问题有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2022-06-09 01:47:23

我不知道坏网关的问题,但我最近遇到了这个失去会话的问题。会话丢失是因为Amazon 2现在通过systemd使用PHP服务来承载PHP。默认的PHP/ElasticBean秸秆配置中的会话跟踪是通过使用/tmp目录中的文件来完成的。但是,启用了systemd的"PrivateTmp“功能,它为PHP服务在运行时创建了一个唯一的目录。一旦PHP服务停止,systemd就会删除这个特殊的“私有”/tmp,它将删除所有会话文件。

每当PHP部署一个新版本时,这个PHP服务就会停止并重新启动,从而导致会话的丢失。

解决这一问题有几个备选方案:

->将PHP配置为使用memcached/redis/etc之类的方法来管理会话,而不是使用文件系统。这可能是最安全的解决方案。

或,

->配置Amazon 2 ElasticBeanstalk实例以处理/tmp目录中的这些会话文件,而不是systemd提供的“私有”tmp目录。

这可以通过在path下面的项目中添加以下部署后配置脚本来实现:.platform/hooks/postdeploy/phpfpm_noprivatetmp.sh

代码语言:javascript
复制
#!/bin/bash -e

# change PrivateTmp from true to false, then reload/restart the systemd service
sed -i 's/PrivateTmp=true/PrivateTmp=false/' /usr/lib/systemd/system/php-fpm.service

# wait a moment...
sleep 2
sudo systemctl daemon-reload

# wait a moment...
sleep 2
sudo systemctl restart php-fpm.service

这将禁用systemd中的"PrivateTmp“功能,导致会话文件存储在”真实“/tmp目录中,在那里不会自动删除它们。部署站点的新版本将不再导致每个人都被注销。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68557421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档