可关注笔者 个人站点 https://www.qiucode.cn/ 由于云服务器内存快满,导致运行缓慢,所以才需要清理下内存
上次在服务器实战的时候出了问题一时要分析各种问题,还是非常需要把核心的命令和工具记录下来。
strace会追踪程序运行时的整个生命周期, 输出每一个系统调用的名字、参数、返回值和执行所消耗的时间等,是高级运维和开发人员排查问题的杀手铜。https://www.cnblogs.com/fadewalk/p/10847068.html
线上一台Linux服务器最近经常磁盘根分区满告警, 但不是普通的日志文件或数据文件过多过大,现象如下: 1)执行“df -h”查看各分区空间的使用情况 [root@XEN64 /]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 9.8G 8.7G 535M 95% / devtmpfs 7.7G 0 7.7G 0% /dev tmpfs 7.7G 0 7.7G 0% /dev/shm tmpfs 7.7G 666M 7.1G 9% /run tmpfs 7.7G 0 7.7G 0% /sys/fs/cgroup /dev/sda3 20G 3.3G 16G 18% /usr/local 可以看到根分区使用率超过了预警值, 进入根目录,查看根目录下各子目录的大小: [root@XEN64 /]# du -sm * 0 bin 180 boot 0 dev 24 etc 3 home 0 lib 0 lib64 1 lost+found 1 media 1 mnt 32 opt du: cannot access 'proc/17842/task/17842/fd/4': No such file or directory du: cannot access 'proc/17842/task/17842/fdinfo/4': No such file or directory du: cannot access 'proc/17842/fd/4': No such file or directory du: cannot access 'proc/17842/fdinfo/4': No such file or directory 0 proc 2 root 666 run 0 sbin 1 srv 0 sys 96 tmp 5856 usr 221 var 进一步检查/usr目录: [root@XEN64 /usr]# du -sm * 358 1.2-compat 164 bin 1 etc 1 games 33 include 912 lib 432 lib64 101 libexec 3269 local 1 man 46 sbin 547 share 1 src 0 tmp 对比du和df的结果,可以发现两者的已使用大小不一致, du命令得到的已用大小远小于df命令已用大小,初步猜测存已被删除文件仍然有进程在写它,导致du命令发现不了。 如果允许,最简单的处理方式是重启机器,不然用下列命令找出被删除的,但仍然可能有进程在写它的文件: pids=`ps aux|awk '{print $2}'`;for pid in $pids; do lsof -p $pid|grep del; done 见到庐山真面目: [root@XEN64 /proc]# pids=`ps aux|awk '{print $2}'`;for pid in $pids; do lsof -p $pid|grep del; done stati 28885 root 1w REG 8,1 5969132048 409096 /tmp/process_monitor-root.log (deleted) stati 28885 root 2w REG 8,1 5969132048 409096 /tmp/process_monitor-root.log (deleted) stati 28885 root 3u REG 8,4 20480039 35651587 /data/consumer/log/consumer.log.5 (deleted) consumer 29756 root 1w REG 8,1 5969132048 409
之前在《如何让程序真正地后台运行》一文中提到了程序后台运行的写法,但是里面的示例程序在某些场景下是会有问题的,这里先不说什么问题,我们先看看这个磁盘满的问题是怎么产生的,通过这篇文章你将会学习到大量linux命令的实操使用。
本文记录 2 种因 /etc/mtab 文件异常导致 df 命令显示异常、分区丢失问题的解决过程,以备后用。 一、根目录丢失 前些日子,同事在 RTX 群里问大家,有台服务器执行 df -h 看不到根
1. rx-checksumming:校验接收报文的checksum。
作者 | 小小水滴 来源 | 51CTO博客 糖豆贴心提醒,本文阅读时间6分钟,文末有秘密! 一、背景 晚上看到有台服务器流量跑的很高,明显和平常不一样,流量达到了800Mbps,第一
本文旨在通过一些常用命令的用法示例,让有一定linux基础的开发同学能对系统进行简单配置,也能够上服务器定位或者解决一些简单基础性的问题,做出初步故障排除,或者为运维同学描述故障的表现提供帮助。
在日常运维中,经常遇到磁盘空间满,发现占用磁盘空间大的文件已经被删除了,但df -Th查看磁盘空间还是满,没有释放出来
1. 什么是linux服务器load average? Load是用来度量服务器工作量的大小,即计算机cpu任务执行队列的长度,值越大,表明包括正在运行和待运行的进程数越多。 参考资料:http://en.wikipedia.org/wiki/Load_average
Nginx TCP backlog 配置,如果是同一个 listen 端口,设置一次就好;比如有多个 server, 每个 server 都是监听 80 端口,只需要给一个 80 端口设置 backlog 就好,一般我们会有一个 default server,在default server 的 80 端口上设置 backlog 的值就可以了;设置好了之后,可以通过 ss -lnt 查看。
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU工程各种工具和数据库的操作系统。Linux的性能是非常出色的,可以完全针对机器的配置有针对性的优化,这一点也是Windows无法比拟的。对于测试工程师来说完全掌握Linux是最基本的了,Linux系统主要用于部署环境和系统日志查询。个人比较喜欢的一款Linux客户端连接工具Xmanager官方下载地址:http://www.xshellcn.com/
前言: 朋友遇到了load average偏高的问题,关于load average的解释,网上也是五花八门,有的说法甚至都有些不负责任。在这里详细分析一下load average。 分析: 1,l
在 “了不起的 Deno 入门教程” 这篇文章中,我们介绍了如何使用 Deno 搭建一个简单的 TCP echo server,本文将使用该示例来探究 TCP echo server 是怎么运行的?前方高能,请小伙伴们深吸一口气做好准备。
日常运维过程中,我们经常需要处理磁盘空间问题,当接到告警后,第一时间会去找那些大文件,一般比如centos,可能大文件就是 /var/log/messages。
概念——磁盘配额是啥??? 由于我们使用的Linux系统是多用户任务的操作系统(也就是说我们同一个系统下的多个用户共同使用着相同的硬盘空间),这就难免出现了多个用户共享磁盘的情况,这种情况会导致什么问题呢?比如用户A在磁盘内存放了大型文件,导致用户B在需要存储文件时发现磁盘已经被写满无法进行保存…。那么如何使多个用户公平地分配磁盘空间呢?这就是磁盘配额要解决的问题。当然也可以在创建一个用户的时候,将他的主目录建立在一个单独的逻辑分区上,但是这样太麻烦了,也不够灵活。
洪志国,腾讯云工程师,负责 TKE 产品容器运行时,K8s,Mesh 数据面等基础组件研发。 陈鹏,腾讯云工程师,负责腾讯云 TKE 的售中、售后的技术支持,根据客户需求输出合理技术方案与最佳实践,为客户业务保驾护航。 容器的底层实现深度依赖于内核的众多特性,如 overlay 文件系统,namespace,cgroup 等,因此内核的功能和稳定性,在很大程度上,决定了整个容器 PaaS 平台的功能和稳定性。从 TKE 上线三年多以来,上万集群,数十万个节点的运营经验来看,内核问题约占所有节点问题的三分之
按照提示分别修复: 1.第一个提示somaxconn这个值为128太小了,这个值是系统的网络连接队列大小,而redis的TCP backlog设置的值为511,因此受限,所以修改下系统的值
日常运维过程中,我们经常需要处理磁盘空间问题,当接到告警后,第一时间会去找那些大文件,一般比如 Centos,可能大文件就是 /var/log/messages。
创作不易,如果您觉得这篇文章对你有帮助,不妨给我点个赞,这将是我继续分享优质内容的动力。
#1 - 错误: 设备上无剩余空间 当你的类UNIX系统磁盘写满了时你会在屏幕上看到这样的信息。本例中,我运行fallocate命令然后我的系统就会提示磁盘空间已经耗尽: $ fallocate -l 1G test4.imgfallocate: test4.img: fallocate failed: No space left on device 第一步是运行df命令来查看一个有分区的文件系统的总磁盘空间和可用空间的信息: $ df 或者试试可读性比较强的输出格式: $ df -h 部分输出内容: Fi
对于TCP的初始接收窗口大小,linux和centos的实现是不一样的,如linux内核3.10版本的初始接收窗口定义为10mss,但centos 3.10内核中的初始窗口大小定义为TCP_INIT_CWND * 2,即20*MSS大小。(看着linux源码在centos7.4系统上测试,纠结了好久。。)
然后进入另一个ps的目录,看到有如下几个命令,然后我有查询了一下系统的这几个命令,发现都变得很大,都达到了1.2M,这些系统命令文件肯定是都被替换了。
容器技术的核心功能,就是通过约束和修改进程的动态表现,从而为其创造出一个“边界”。在Docker中使用了Namespace 技术来修改进程视图从而达到进程隔离的目的。
TCP有限状态机 TCP服务 创建TCP服务的四个基本步骤: socket – 创建socket套接字。 bind – 绑定要监听的IP地址。 listen – 开始监听客户端连接请求。 accept
滑动窗口本质上是描述接受方的TCP数据报缓冲区大小的数据,发送方根据这个数据来计算自己最多能发送多长的数据。如果发送方收到接受方的窗口大小为0的TCP数据报,那么发送方将停止发送数据,等到接受方发送窗口大小不为0的数据报的到来。 关于滑动窗口协议,还有三个术语,分别是: 窗口合拢:当窗口从左边向右边靠近的时候,这种现象发生在数据被发送和确认的时候。 窗口张开:当窗口的右边沿向右边移动的时候,这种现象发生在接受端处理了数据以后。 窗口收缩:当窗口的右边沿向左边移动的时候,这种现象不常发生。
我们知道,直接从物理内存读写数据要比从硬盘读写数据要快的多,因此,我们希望所有数据的读取和写入都在内存完成,而内存是有限的,这样就引出了物理内存与虚拟内存的概念。 物理内存就是系统硬件提供的内存大小,是真正的内存,相对于物理内存,在linux下还有一个虚拟内存的概念,虚拟内存就是为了满足物理内存的不足而提出的策略,它是利用磁盘空间虚拟出的一块逻辑内存,用作虚拟内存的磁盘空间被称为交换空间(Swap Space)。 作为物理内存的扩展,linux会在物理内存不足时,使用交换分区的虚拟内存,更详细的说,就是内核会将暂时不用的内存块信息写到交换空间,这样以来,物理内存得到了释放,这块内存就可以用于其它目的,当需要用到原始的内容时,这些信息会被重新从交换空间读入物理内存。 Linux的内存管理采取的是分页存取机制,为了保证物理内存能得到充分的利用,内核会在适当的时候将物理内存中不经常使用的数据块自动交换到虚拟内存中,而将经常使用的信息保留到物理内存。
######################################################### # 硬盘显示被写满但是用du -sh /*查看时占用硬盘空间之和还远 #小于硬盘大小问的解决 #date:2010-06-09 #作者:老男孩---《老男孩linux就业培训中心 》 #QQ:31333741 #QQ交流群:385168604 #blog: http://oldboy.blog.51cto.com ##########################################################
在《深入解析常见三次握手异常》 这一文中,我们讨论到如果发生连接队列溢出而丢包的话,会导致连接耗时会上涨很多。那如何判断一台服务器当前是否有半/全连接队列溢出丢包发生呢?
Linux容器中用来实现“隔离”的技术手段:Namespace。 Namespace实际上修改了应用进程看待整个计算机“视图”,即它的“视线”被操作系统做了限制,只能“看到”某些指定的内容。对于宿主机来说,这些被“隔离”了的进程跟其他进程并没有区别。
调用分词服务的服务发现超时并告警,查看分词服务被调耗时发现一切正常;本机手动请求发现确实存在响应慢的问题。
今天有个小伙伴跑过来告诉我有个奇怪的问题需要协助下,问题确实也很奇怪。客户端调用RT比较高并伴随着间歇性异常Connection reset出现,而服务端CPU 、线程栈等看起来貌似都很正常,而且服务端的RT很短。
总体而言,Linux操作系统是一个强大、灵活且可定制的操作系统,广泛应用于服务器、嵌入式系统、超级计算机等各种领域。
/proc/目录 虚拟文件系统,将内核与进程状态归档为文本文件(系统信息都存放这目录下) Linux系统上的/proc目录是一种文件系统,即proc文件系统。与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改其中某些文件来改变内核的运行状态。 目录 描述 /proc/meminfo 查看内存信息 /proc/loadavg 还记得 top 以及 uptime 吧
1. /proc目录 Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。
1、运行Monkey进行压力测试: adb shell monkey -p cn.microinvestment.weitou --pct-touch 100 --ingore-crashes --throttle 1000 -s 100 -v -v 50 2、监控内存值,如果出现过大等递增异常则保存HPROF文件(hprof文件是Java 虚拟机的Heap快照)用于分析查看应用内存的命令: adb shell dumpsys meminfo cn.microinvestment.weitou(进程名) 如果发现内存过大,则保存HPROF文件:adb shell am dumpheap <进程名> <保存路径> 3、分析hprof文件 用工具MAT来查看,首先还要这个HPROF文件转换成MAT可读的文件 在Android SDK tool里面有个hprof-conv命令: hprof-conv <原HPROF文件路径> <转换后的HPROF路径> hprof-conv a.hprof b.hprof 4、用MAT工具打开转换后的HPROF文件 一般选择Leak Suspects Report(通过SQL语句来查询对象有没有被释放掉,如果有多个相同的对象,则会存在内存泄露的问题)
3.cat /etc/issue 或cat /etc/redhat-release(Linux查看版本当前操作系统发行版信息)
今天在测试一个功能,需要频繁的替换一个 docker 容器内的一个文件,因为还处在测试阶段,所以我就没有频繁的构建 docker 镜像了;在前几次执行docker cp命令的时候都能正常的操作。突然再次执行 docker cp命令时提示如下报错:
本文旨在提供有关 Linux File System, 某些 important files, 他们的 usability 和 location. Linux目录结构图 一个标准 Linux 分发遵循下面提供的目录结构,并附有图表和说明。 📷 img 上面的每个目录(首先是一个文件)都包含重要信息,需要引导到设备驱动程序、配置文件等。简要描述每个目录的用途,我们从层次结构开始。 /bin :启动、修复所需的所有可执行二进制程序(文件)、运行到单用户模式所需的文件以及其他重要的基本命令 viz., [cat]
问题说明:IDC里的一台服务器的/分区使用率爆满了!已达到100%!经查看发现有个文件过大(80G),于是在跟有关同事确认后rm -f果断删除该文件。但是发现删除该文件后,/分区的磁盘空间压根没有释放出来,使用率还是100%!这是为什么呢?? [root@linux-node1 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup00-LogVol00
与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改其中某些文件来改变内核的运行状态。
linux都有相应开源工具实时采集网络连接、进程等信息其中网络连接一般包括最基本的五元组信息(源地址、目标地址、源端口、目标端口、协议号)再加上所属进程信息pid, exe, cmdline)等。其中这两项数据大多可直接读取linux /proc目录下的网络状态连接文件/proc/net/tcp、/proc/net/udp), 进程状态目录(/proc/pid/xx) 。
SYN Flood 是互联网上最原始、最经典的 DDoS(Distributed Denial of Service)攻击之一。
top命令是linux下非常重要的命令,帮助我们快速查看系统状态 那么top是如何获取系统各项状态指标的呢? 我们用strace命令跟踪一下top的执行 $ strace -o /tmp/strace_top.txt top -b -n 1 strace的作用: Linux中,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通过系统调用访问硬件设备 strace可以跟踪到一个进程产生的系统调用 上面的命令中,把top的
在Linux上,proc是一个伪文件系统,提供了访问内核数据的方法, 一般挂载在/proc目录,其中大部分是只读的。 下面是一些/proc重要的文件 pid目录 /proc/[pid]目录,pid为进程的数字ID,每个运行着的进程都有这么一个目录。 cmdline文件 /proc/[pid]/cmdline是一个只读文件,包含进程完整的命令行信息。如果这个进程是zombie进程,则这个文件没有任何内容。 > cat /proc/1751/cmdline java -jar rumenz.jar 这是一个J
领取专属 10元无门槛券
手把手带您无忧上云