本次我们使用的是Linux系统中的systemctl命令,将我们安装的组件服务,注册为systemctl管理的系统命令。
此时,如果这个容器由于某种原因第一次启动失败了,那么,该容器将会再重启两次,而不会一直无限重启啦。
1. 什么是linux服务器load average? Load是用来度量服务器工作量的大小,即计算机cpu任务执行队列的长度,值越大,表明包括正在运行和待运行的进程数越多。 参考资料:http://en.wikipedia.org/wiki/Load_average
大年初三,客户反馈,自己的业务集群RED了,一直触发集群状态告警,需要紧急处理....
Linux 内核(以下简称内核)是一个不与特定进程相关的功能集合,内核的代码很难轻易的在调试器中执行和跟踪。开发者认为,内核如果发生了错误,就不应该继续运 行。因此内核发生错误时,它的行为通常被设定为系统崩溃,机器重启。基于动态存储器的电气特性,机器重启后,上次错误发生时的现场会遭到破坏,这使得查找 内核的错误变得异常困难。
原文:https://medium.com/hackernoon/running-pm2-node-js-in-production-environments-13e703fc108a
📫 作者简介:「六月暴雪飞梨花」,专注于研究Java,就职于科技型公司后端工程师 🏆 近期荣誉:华为云云享专家、阿里云专家博主、腾讯云优秀创作者 🔥 三连支持:欢迎 ❤️关注、👍点赞、👉收藏三连,支持一下博主~
ssh登录远程服务器重启项目(第一次),未等tomcat启动完成,直接访问项目的对应后台管理系统网站,导致网页一直加载不出来,心急又去重复启动项目(第二次),再次访问网页报错:502 Bad Gateway nginx。
第一种就是根据需求来删减日志的,可以删除过期的日志或者时间久远的日志文件。一般来讲,大家应该都会有相应的调度任务来处理这个。
cloudbase-init是初始化程序,涉及很多功能,比如购买机器时、重装系统时、重置密码时指定的密码的生效,购买机器时、重装系统时指定的hostname的生效,购买机器时指定的userdata的生效等重要功能。
云原生为实践者指明了一条能够充分利用云的能力、发挥云的价值的最佳途径,现已成为企业数字化转型的必经之路。随着云计算的普及,企业应用容器化的趋势已势不可挡,并主要面临以下几个重要问题:激增的流量负载与资源容量规划的矛盾如何解决?资源成本与系统可用性如何平衡?
当然monit有shell 和 perl 脚本替代品来监控服务。如果服务失败脚本将尝试重新启动服务并向我发送一封自动电子邮件。但是monit 是一个完整的解决方案。比如说
之前把Go服务都迁到Kubernetes上后有些服务的某个 Pod总是时不时的重启一下,通过查业务日志根本查不到原因,我分析了一下肯定是哪里代码不严谨造成引用空指针导致Go发送运行时panic才会挂掉的,但是容器重启后之前输出到stderr的panic是会被清空的,所以才有了这篇文章里后面的分析和方案解决。
Linux服务器重启命令有shutdown、halt、reboot、init和poweroff,各个重启命令参数及使用方法:
Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余 项目。它基于 Google 公司推出的 Go 语言实现。项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在 GitHub 上进行维护。
1) 关闭指定网卡,如关闭网卡eth0 ifconfig eth0 down 也可以使用ifdown,通常ifdown是一个指向ifup的软链接,而ifup为一个脚本文件。 2) 命令自启动,如希望机器重启时自动关闭网卡eth0 这个只需要在文件/etc/rc.d/rc.local中添加一行“ifconfig eth0 down”即可。 3) 进入MySQL终端界面示例: mysql -h127.0.01 -P3306 -uroot -p'password' database 127.0.0.1为DB的IP地址,3306为DB的服务端口号,root为访问它的用户名,password为访问它的密码,databse为需要访问的数据库 参数database是可选的,建议password使用单引号括起来,以避免shell对它进行转义处理,比如如果密码中包含感叹号字符"!",使用双引号时需要使用斜杠“\”转义。 如果不想进入MySQL界面,只需要在上述基础上再带上参数“-e'SQL'”,如: mysql -h127.0.01 -P3306 -uroot -p'password' test -e'show tables' 4) MySQL授权指定IP连接: grant all on *.* to root@'127.0.0.1' identified by 'root110'; 其中root为访问数据库的用户名,而root110为用户的密码。 5) MySQL导入带中文的SQL: mysql -uroot -proot110 table < table.sql -f --default-character-set=utf8 要注意加上-f --default-character-set=utf8 6) MySQL导出数据库表: mysqldump -uroot -p db_name > db.sql(root为访问数据库的用户名,-p表示需要输入密码,db_name为需要导出的数据库名,db.sql为存储导出结果的文件) 如果只想导出指定的表,则可在db_name后留一空格后跟上表名即可。 7) 重启Linux服务,如重启cron: service cron restart 将上面的restart改成stop为停止,改成start为启动。 8) 网络访问策略: 禁止指定网段访问(24对应的掩码为255.255.255.0): iptables -I INPUT -s 10.6.208.0/24 -j DROP iptables -I INPUT -s 10.6.223.0/24 -j DROP iptables -I INPUT -s 10.6.224.0/24 -j DROP 为保证上述操作在机器重启后仍然有效,执行以下操作: iptables-save > /etc/sysconfig/iptables 这样IP地址:10.6.208.101、10.6.223.31和10.6.224.219等就不能访问目标机器了。 9) 日期操作 # date +%s 1479791653 # date --date='@1479791653' Tue Nov 22 13:14:13 CST 2016 10) 查找进程工作目录命令: pwdx 如: pwdx `pidof test`
//添加到主机的路由# route add –host 192.168.1.11 dev eth0
上一节中,我们了解到了Docker 的一些基本知识点,它的一些核心概念,Docker的使用安装等。此篇文章我们对 Docker 进行入门讲解
最烦的事情,莫过于服务莫名其妙的重启,当你看到一个服务一天重启23次,你会是怎样的一个感觉,反正博主我快要摔电脑了。。。。
上面我们使用了 docker info 指令,该命令会返回所有容器和镜像的数量、Docker 使用的执行驱动和存储驱动,以及Docker 的基本配置
我们了解到了Docker 的一些基本知识点,它的一些核心概念,Docker的使用安装等。此篇文章我们对 Docker 进行入门讲解
Saturn 3.0.0致力于让用户做到自运维:一方面为用户trouble shooting提供便利,另外一方面希望作为一站式平台去管理executor。
上面是百度百科中Docker的介绍,因为Docker的诸多好处,准备在产品中使用,最近做了些技术的预研,本文主要介绍在CentOS7中使用Docker来安装MySql。
我们有一个 Spring 的项目是部署在容器中的,如果不进行任何配置的话,这个项目运行的所有日子都会在容器中。
类似于电脑,要在朋友的电脑上跑你写的Java程序,就得检查他电脑有没有安装Java环境.
设置ulimit -n和ulimit -u的值大于20000。如果ulimit的值设置过低的话,当MongoDB处于 频繁访问的状态下,将会产生错误,最终导致无法连接到MongoDB实例。
binlog 就是binary log,二进制日志文件,这个文件记录了mysql所有的dml操作。通过binlog日志我们可以做数据恢复,做主住复制和主从复制等等。对于开发者可能对binlog并不怎么关注,但是对于运维或者架构人员来讲是非常重要的。 在my.inf主配置文件中直接添加三行 log_bin=ON log_bin_basename=/var/lib/mysql/mysql-bin log_bin_index=/var/lib/mysql/mysql-bin.index 三个参数来指定,
binlog 就是binary log,二进制日志文件,这个文件记录了mysql所有的dml操作。通过binlog日志我们可以做数据恢复,做主住复制和主从复制等等。对于开发者可能对binlog并不怎么关注,但是对于运维或者架构人员来讲是非常重要的。
sql 语句分为两种,一种是查询,一种是更新(增加,更新,删除)。先分析下查询语句,语句如下:
容器(Container):容器是一种轻量级、可移植、并将应用程序进行的打包的技术,使应用程序可以在几乎任何地方以相同的方式运行 Docker将镜像文件运行起来后,产生的对象就是容器。容器相当于是镜像运行起来的一个实例。 容器具备一定的生命周期。 另外,可以借助docker ps命令查看运行的容器,如同在linux上利用ps命令查看运行着的进程那样。
本文介绍了Raft算法的原理、核心概念、算法流程以及其在CMQ(云消息队列)中的应用。Raft算法是Google Spanner中使用的分布式一致性算法,它通过选举出一个Leader来负责处理所有客户端请求,从而确保数据的一致性和可靠性。CMQ作为腾讯云的一款消息队列服务,也采用了Raft算法来保证消息的可靠传输。
Linux主机名即hostname,如何修改?可以临时修改主机名,但是Linux服务器重启后,主机名就失效了。还有一种方式可以永久修改主机名,Linux重启与否依然有效。两种方法都来说一说:
遇到一个特殊情况,2012R2系统安装22年1月份补丁后进不去系统,报[Windows未能启动。原因可能是最近更改了硬件或软件。状态0xc0000001 。] F8每一项都试了,都报0xc000021a ,产生一个dmp文件后又自动回到0xc0000001的界面。
==备注:== ==nginx如果没有设置开机自启动的话,当机器重启后,nginx不会自启动。==
描述:今天接到同事电话说安装的一台国产服务器Kylin V10 SP3 系统的root登录密码忘记了,遂想着直接进入单用户模式更改root不就行了吗,谁想到被GRUB密码拦住去路,由于当时做等保主机安全模板的时候添加了grub认证,然后grub密码又忘记了,于是乎只能通过挂载KylinOS系统镜像,进入到救援模式修改(去掉)grub密码,然后重启进入单用户模式修改root密码,由于配置过程还是比较多,以下是作者的操作步骤,帮助遇到相同问题的道友。
一、使用 route 命令添加 使用route 命令添加的路由,机器重启或者网卡重启后路由就失效了,方法: //添加到主机的路由 # route add –host 192.168.1.11 dev eth0 # route add –host 192.168.1.12 gw 192.168.1.1 //添加到网络的路由 # route add –net 192.168.1.11 netmask 255.255.255.0 eth0 # route add –net 192.168.1.11 netmask 255.255.255.0 gw 192.168.1.1 # route add –net 192.168.1.0/24 eth1 //添加默认网关 # route add default gw 192.168.2.1 //删除路由 # route del –host 192.168.1.11 dev eth0 二:在linux下设置永久路由的方法: ./etc/sysconfig/static-routes : any net 192.168.3.0/24 gw 192.168.3.254 any net 10.250.228.128 netmask 255.255.255.192 gw 10.250.228.129 使用static-routes的方法是最好的。无论重启系统和service network restart 都会生效。 static-routes文件又是什么呢,这个是network脚本执行时调用的一个文件,这个文件的放置在/etc/sysconfig目录下,在network脚本中的位置是: # Add non interface-specific static-routes. if [ -f /etc/sysconfig/static-routes ]; then grep "^any" /etc/sysconfig/static-routes | while read ignore args ; do /sbin/route add -$args done fi 从这段脚本可以看到,这个就是添加静态路由的方法,static-routes的写法是 any net 192.168.0.0/16 gw 网关ip。
今天下午出现告警提示线上环境机器的CPU突增到100%,持续约两分钟又回落到正常水平。
这篇文章的全称应该叫:[在某些内核版本上,cgroup 的 kmem account 特性有内存泄露问题],如果你遇到过 pod 的 cannot allocated memory 报错,node 内核日志的 SLUB: Unable to allocate memory on node -1 报错,那么恭喜你中招了。
在之前的一篇文章《终端自动化测试探索之路》中提到过当发生断电等情况,服务器重启之后如何快速恢复自动化服务,这里针对这个问题具体讲讲我的实现方式。
在日常的开发工作中相信使用 Kubernetes 的同学们一定会偶尔收到容器重启的事件告警。由于应用层面的问题导致的容器重启相对容易排查,比如看容器的内存监控我们能确定是不是内存超过配置的 limit; 又或者看是不是应用有 panic 没有 recovery。 一个正常的工作日我们突然连续收到多条容器重启告警,查看报警还是来自不同的应用。按照一般的排查思路先去查看监控,内存没有异常,使用值一直在 limit 之下;然后去看日志也没有找到任何 panic 或者其他错误。仔细一看这几个告警的应用都是来自同一个集群,这个时候猜测大概率和集群有关系,但是这个集群我们还有其他很多应用并没有发生容器重启,所以猜测应该不是集群本身的问题,那是不是和机器有关系呢?然后我把重启过的实例所在的 node ip 都筛选出来发现重启的应用都是集中在某几台机器。在这些节点上我去查看了一下 kubelet进程,发现 kubelet 在容器告警的时间段都重启了进程。在这种情况下基本就找到了容器重启的直接原因--kubelet 重启了。但是我们并没有更新实例,kubelet 重启怎么会把我们的容器重启呢?下面我们就介绍一下根本原因--kubelet计算容器的 hash 值。 我们知道在 Kubernetes 中的节点上运行着 kubelet 进程,这个进程负责当前节点上所有 Pod 的生命周期。在这里我们从源码层面看看 kubelet 怎么实现容器的重启。
在日常繁琐的运维工作中,对linux服务器进行安全检查是一个非常重要的环节。今天,分享一下如何检查linux系统是否遭受了入侵? 一、是否入侵检查 1)检查系统日志 检查系统错误登陆日志,统计IP重试次数(last命令是查看系统登陆日志,比如系统被reboot或登陆情况) [root@bastion-IDC ~]# last 2)检查系统用户 查看是否有异常的系统用户 [root@bastion-IDC ~]# cat /etc/passwd 查看是否产生了新用户,UID和GID为0的用户 [root@b
autossh -p 22 -M 6777 -NR '*:6766:127.0.0.1:22' usera@a.site
Ubuntu主机名即hostname,如何修改?可以临时修改主机名,但是Linux服务器重启后,主机名就失效了。还有一种方式可以永久修改主机名,Linux重启与否依然有效。两种方法都来说一说:
在日常的开发工作中相信使用 Kubernetes 的同学们一定会偶尔收到容器重启的事件告警。由于应用层面的问题导致的容器重启相对容易排查,比如看容器的内存监控我们能确定是不是内存超过配置的 limit; 又或者看是不是应用有 panic 没有 recovery。
近日,腾讯云安全团队监测到部分云上及外部用户机器存在安全漏洞被入侵,同时植入 watchdogs 挖矿病毒,出现 crontab 任务异常、系统文件被删除、CPU 异常等情况,并且会自动感染更多机器。攻击者主要利用 Redis 未授权访问入侵服务器并通过内网扫描和 known_hosts 历史登录尝试感染更多机器。
Linux系统的route命令用于显示和操作IP路由表(show / manipulate the IP routing table)。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。在Linux系统中,设置路由通常是为了解决以下问题:该Linux系统在一个局域网中,局域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的IP地址设置为Linux机器的默认路由。要注意的是,直接在命令行下执行route命令来添加路由,不会永久保存,当网卡重启或者机器重启之后,该路由就失效了;可以在/etc/rc.local中添加route命令来保证该路由设置永久有效。
问题:我修复的bug,我要亲自部署到服务器,服务重启期间影响测试和前端调试,抱怨不断。
记录下File和Position的值 注意:执行完此步骤后不要再操作主服务器MySQL,防止主服务器状态值变化
领取专属 10元无门槛券
手把手带您无忧上云