新建网站推广wordpress写网站

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

新建网站推广,wordpress写网站,谷歌优化技巧,摄影网站怎么备案Bug场景#xff1a; 前几天在服务器上部署了一个免费影视网站#xff0c;这个应用需要四个容器#xff0c;同时之前的建站软件workpress也是使用docker部署的#xff0c;也使用了三个容器。在使用workpress之前#xff0c;我将影视软件的容器全部停止。 再使用workpress…Bug场景 前几天在服务器上部署了一个免费影视网站这个应用需要四个容器同时之前的建站软件workpress也是使用docker部署的也使用了三个容器。在使用workpress之前我将影视软件的容器全部停止。 再使用workpress时服务器的内存资源一切正常此后就没管了。过了两天重新登入服务器时发现完全登不进去。 问题描述 ssh登入失败aliyun的workbench提示无法使用密码登入此刻还没有意识到问题的严重性以为是常见的配置问题之前不小心配置了设置密钥对首先重置密码而后重启。 当服务器状态重启了半天还没有启动的时候我就意识到了事情的严重性使用VNC无密码登入发现连接不上使用finalshell连接访问超时。这时我理解估计是我服务器内部出现了问题。 原因分析 使用阿里云的安全服务推荐大家使用阿里云的云助手和自助的运维排查发现是由于内存和cpu占用过高当时我以为服务器被攻击了因为之前的cpu的状态一直是很稳定的水平此刻一下子占百分之百。 通过查询资料我发现cpu和内存的关系使用更加复杂 当内存资源紧张时操作系统会启动一系列的内存管理机制来释放内存。操作系统通过 页面交换swap 和 内存回收page reclaim 来释放内存。 页面交换Swap当物理内存RAM不足时系统会将一些不活跃的内存页数据移动到交换空间swap从而腾出内存供当前活跃的进程使用。如果交换空间不足或者交换操作过于频繁会导致系统变得非常慢因为硬盘的读取速度远低于内存。 内存回收Page Reclaim这是指操作系统通过回收未被频繁使用的页面通常是程序或数据的缓存来释放内存。当系统发现某些内存页面长时间没有被访问时它会将这些页面释放回空闲内存池。
当内存不足且系统开始触发内存回收和清理 清理内存内核在进行内存回收时将某些数据从内存移动到磁盘或者将不再活跃的内存页面写入交换空间。如果内存中有大量的数据需要清理例如缓存、文件系统数据、进程的私有内存等那么这些清理动作就会导致磁盘的读写。 磁盘缓存回收当系统回收内存时缓存例如文件系统缓存、应用程序缓存等中的数据会被清理。这些数据如果稍后还需要用到就必须从磁盘重新读取。因此系统的磁盘 IO 会迅速增加因为很多。
所以根本原因是内存不足系统开始触发清理内存策略而系统及程序运行本身就是需要那么多的数据数据被清理后又必须重新加载因此就导致了系统IO读高清理掉的仍然需要从磁盘上读取。同时清理本身需要磁盘输出两者相加导致了磁盘IO高当IO达到磁盘性能峰值时CPU就只能等待磁盘数据什么也做不了对于我们的响应无法回应。 解决过程——修改容器由docker自动重启策略 首先由于已经无法登入无法对操作系统做出指令只能借助阿里云官方来协助。再控制台点击售后在线描述问题 阿里云安排工程师来服务解决 首先建立快照备份授权给阿里云。工程师帮云盘暂时扩容就可以操控系统了 再获得命令控制权之后修改了/etc/sysctl.conf文件下的vm.swappiness 值 修改成了40。 执行了sysctl -p。vm.swappiness 是一个与 Linux 内存管理相关的参数它控制着系统在内存使用达到一定水平时使用交换空间Swap的程度。交换空间Swap是硬盘上的一个区域用来存储暂时不需要常驻内存的内容从而释放内存给更重要的进程。vm.swappiness 值的范围是 0 到 100。40 是一个平衡的设置既能确保内存使用率不至于过高也能避免过早地使用交换空间。 执行 sysctl -p执行 sysctl -p 命令的使 /etc/sysctl.conf 文件中的配置生效。 上述任务是使得内存到80使用swap而不是等到90再使用这样cpu不会被占满使得再原先内存环境下仍可以使用cpu。 再登入系统之后使用配置下 atop监控工具可以检查系统的进程 这里第一个进程是由于内存过大而产生的此时我发现原先我关闭的docker应用居然全部都再运行我之前明明是停止了的 原来因为我的容器再部署的时候直接默认是docker容器重启的时候同时自动重启如下代码所示这就导致了当我78个容器运行的时候内存占用直接超过容量而此刻我的swap策略没有过早的进行交换这些使得cpu宕机无法正常响应其他的操作。直接将容器停止并展示删除即可恢复正常的内存和cpu重新部署的时候配置不自动重启
ocker inspect –format {{.Name}}: {{.HostConfig.RestartPolicy.Name}} wordpress_wnjx-wordpress_Wnjx-1 /wordpress_wnjx-wordpress_Wnjx-1: alwaysdocker自动重启 为什么需要设置自动重启策略 自动重启策略可以确保即使在 Docker 或系统重启后关键应用如数据库、Web 服务器等能够持续运行减少人为干预。使用自动重启策略容器会在错误退出后自动恢复,如果你有多个容器手动监控和重启容器会非常麻烦。设置自动重启能够帮助自动化这个过程减少运维负担。 重启策略如何与 Docker 守护进程重启结合使用 Docker 守护进程Docker Daemon会随着主机的重启而重启Docker 守护进程管理容器的生命周期包括启动、停止、重启等。当 Docker 守护进程启动时它会检查每个容器的重启策略并决定是否重启这些容器。因此如果设置了自动重启策略例如 always 或 unless-stopped当 Docker 守护进程启动时符合条件的容器会被自动重启。 容器重启策略和系统服务管理如 systemd 可以将 Docker 容器配置为 systemd 服务通过 systemd 来控制容器的启动和停止。例如使用 systemd 也可以实现容器的自动重启。这样即使 Docker 守护进程重启systemd 也会确保容器按期望重启。 [Unit] DescriptionDocker Container for my_container //描述服务的名称。 Afterdocker.service //确保容器在 Docker 守护进程启动后才会启动。 Requiresdocker.service //如果 Docker 守护进程没有启动容器服务将不会启动。[Service] Restartalways/no //确保容器在退出时自动重启。也可以设置为 on-failure只在容器异常退出时重启。 ExecStart/usr/bin/docker start -a my_container//启动容器的命令-a 选项确保容器的输出会连接到当前的终端。 ExecStop/usr/bin/docker stop -t 2 my_container//停止容器的命令-t 2 表示在容器关闭时等待 2 秒。 //指定该服务应该在系统的多用户模式下启动 [Install] WantedBymulti-user.target //重新加载启动服务 sudo systemctl daemon-reload sudo systemctl start docker-my-container.service