当前位置: 首页 > news >正文

群晖nas做网站域名h5简单网页代码

群晖nas做网站域名,h5简单网页代码,七牛云 wordpress,嘉兴南湖区优秀营销型网站建设最后更新时间 2023-01-24. 背景 笔者所在公司技术栈为 Golang PHP#xff0c;目前部分项目已经逐步转 Go 语言重构#xff0c;部分 PHP 业务短时间无法用 Go 重写。 相比 Go 语言#xff0c;互联网公司常见的 Nginx PHP-FPM 模式#xff0c;经常会出现性能问题—— 特… 最后更新时间 2023-01-24. 背景 笔者所在公司技术栈为 Golang PHP目前部分项目已经逐步转 Go 语言重构部分 PHP 业务短时间无法用 Go 重写。 相比 Go 语言互联网公司常见的 Nginx PHP-FPM 模式经常会出现性能问题—— 特别是我们的活动业务尽管底层用了鸟哥的 Yaf 框架 但由于业务逻辑繁重即使框架层面上完全零损耗常常支撑不了流量高峰。 一旦某个时间段开启活动虚拟机的扩容真的非常痛苦。 SRE、开发、QA 三方经常需要因为某个运营活动的进行提前压测预估容量。 目前活动业务已经逐步用 Go 语言改造此处不具体展开防止跑题哈哈。 正因为 PHP 虚拟机模式每次扩容需要流量剔除、克隆、操作负载均衡、验证流量等等 推进 PHP 容器化就显得格外重要。 公司在去年年中已经开始进行 PHP 容器化不过由于项目优先级以及人力原因进度较为迟缓。 事情经过 某项目进行 PHP 容器化改造切换少许流量到容器中逐步加大灰度流量某一天开发上线新功能发现滚动部署过程中存在 502 错误 分析原因 nginx 发生了 502很多时候是后端也就是 php-fpm 不在工作。 我们的 PHP 业务的 Pod由以下 5 个容器组成 nginxphp-fpmmetric监控jaeger链路追踪log日志收集 滚动时存在关闭旧 Pod 启动新 Pod 的过程借助 K8s 官方文档 的描述我们看看 Pod 结束的一个例子 你使用 kubectl 工具手动删除某个特定的 Pod而该 Pod 的体面终止限期是默认值30 秒。API 服务器中的 Pod 对象被更新记录涵盖体面终止限期在内 Pod 的最终死期超出所计算时间点则认为 Pod 已死dead。 如果你使用 kubectl describe 来查验你正在删除的 Pod该 Pod 会显示为 “Terminating” 正在终止。 在 Pod 运行所在的节点上kubelet 一旦看到 Pod 被标记为正在终止已经设置了体面终止限期kubelet 即开始本地的 Pod 关闭过程。在 kubelet 启动体面关闭逻辑的同时控制面会将关闭的 Pod 从对应的 EndpointSlice和 Endpoints对象中移除过滤条件是 Pod 被对应的服务以某 选择算符选定。 ReplicaSet 和其他工作负载资源不再将关闭进程中的 Pod 视为合法的、能够提供服务的副本。 关闭动作很慢的 Pod 也无法继续处理请求数据 因为负载均衡器例如服务代理已经在终止宽限期开始的时候将其从端点列表中移除。超出终止宽限期限时kubelet 会触发强制关闭过程。容器运行时会向 Pod 中所有容器内仍在运行的进程发送 SIGKILL 信号。 kubelet 也会清理隐藏的 pause 容器如果容器运行时使用了这种容器的话。kubelet 触发强制从 API 服务器上删除 Pod 对象的逻辑并将体面终止限期设置为 0 这意味着马上删除。API 服务器删除 Pod 的 API 对象从任何客户端都无法再看到该对象。 通常情况下容器运行时会发送一个 TERM 信号到每个容器中的主进程。很多容器运行时都能够注意到容器镜像中 STOPSIGNAL 的值并发送该信号而不是 TERM。一旦超出了体面终止限期容器运行时会向所有剩余进程发送 KILL 信号之后 Pod 就会被从 API 服务器上移除。 如果 kubelet 或者容器运行时的管理服务在等待进程终止期间被重启集群会从头开始重试赋予 Pod 完整的体面终止限期。 所以我们可以发现 nginx、php-fpm 收到 TERM 信号后不做请求的优雅处理直接强制退出了强制退出的原因可以移步这俩文档nginx - http://nginx.org/en/docs/control.html、php-fpm - https://linux.die.net/man/8/php-fpm参考上面的第 3 点在容器运行时发送 TERM 信号后也同时移除 endpoint此处不是串行的。一旦 endpoint 移除的时间晚了流量就会剔不干净到达了 nginx 后php-fpm 进程已经退出从而导致 502 的产生。 解决办法 有了上面的分析解决起来就方便多了 查看上面文档我们可以了解到nginx 和 php-fpm 喜欢 QUIT 信号均可做到 graceful shutdown。 只需要在 Dockerfile 指定 STOPSIGNAL SIGQUIT 即可。 但我记得之前封装的 php-fpm 镜像使用的是社区维护版本应该加上了才对。 而我看了线上的 Dockerfilenginx 使用的是社区维护的已经配置了 STOPSIGNAL SIGQUIT没问题 但是 PHP 由于之前的 alpine linux 因为监控扩展、链路追踪扩展编译环境的原因使用了 CentOS 镜像。 镜像的来源都是自己打包的并没有指定退出信号 加上了之后发现不会有 502 了 至此问题解决。 延伸思考 本来文章到此结束突然想到线上的 Go 服务会不会有同样的问题 想了一下也好办 要么自行处理 TERM 信号做好优雅退出的姿势 要么学 nginx也用 QUIT 信号并做好优雅退出处理Dockerfile 指定 STOPSIGNAL。 至于怎么处理信号Go 实现起来非常舒服 ch : make(chan os.Signal, 1) signal.Notify(ch, syscall.SIGTERM, syscall.SIGQUIT) -ch // 收到信号了还可以根据信号类型做不同的处理逻辑自行处理剩余任务实现优雅退出。嗯channel 大法好。 文章来源于本人博客发布于 2022-09-03原文链接https://imlht.com/archives/398/
http://www.dnsts.com.cn/news/169223.html

相关文章:

  • 学校网站代码模板合肥网站推广公司排名
  • 母婴网站模板网站建设的参考书籍
  • lol门户网站源码玉树电子商务网站建设
  • 建设银行总部投诉网站互联网是什么
  • 大学生想做网站推广普通话的宣传内容
  • dede电影网站温岭app开发公司
  • 移动端网站开发 float响应式网站费用
  • 做杂志的网站阳江市人才招聘网
  • 营销网站中最重要的部分是外贸企业网站建设方案
  • 网站编程图如何快速的建设网站
  • 网站建设微信营销公司做美食软件的视频网站
  • 宁波模板建站源码网络营销教案ppt
  • 凡科网站可以做seo优化网站开发自我介绍代码
  • 广西城乡建设部网站网页界面设计布局
  • 发展历程 网站建设深圳网络开发
  • 外贸营销型网站案例photoshop网站模板
  • 北欧做的比较好的网站建行app官方下载
  • 潍坊公司网站建设厦门集团网站建设
  • 类似于pinterest的设计网站东莞高端网站建设公司哪家好
  • 做二手平台公益的网站郑州网站建设价位
  • 什么网站可以接单做海报软件项目网站建设实验报告
  • 外贸网站是什么意思赣州网上商城
  • 温州建站模板搭建中小企业网站制作407
  • 浙江建设职业技术学院提前招网站wordpress地图插件
  • 品牌网站设计公司上饶市住房城乡建设局网站
  • 四川省成华区建设局网站传统营销与网络营销的整合方法
  • 广州商城网站建设西安网站建设方案托管
  • 成功备案的网站增加域名动感网站模板
  • 国内免费iphone网站中国纪检监察报邮箱
  • 专门做照片的网站咸阳住房和城乡建设局网站