#101 inode 使用率太高的问题
Linux 2023-04-03Jenkins 发布失败,日志显示 scp No space left on device,也就是磁盘空间不足。
查看之后发现是磁盘占用其实不高,不过 inode 使用率满了(其实监控也在报),也就是说小文件太多了。
[staff001@192.168.64.234 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 40G 29G 8.7G 77% /
tmpfs 972M 0 972M 0% /dev/shm
/dev/vdb 99G 41G 54G 44% /data
[staff001@192.168.64.234 ~]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/vda1 2621440 2621440 0 100% /
tmpfs 248685 1 248684 1% /dev/shm
/dev/vdb 6553600 467525 6086075 8% /data
通过经验和 find 命令找到文件太多的目录:
find /var -xdev -printf '%h\n' | sort | uniq -c | sort -n | awk '{sum+=$1;print $0;}END{print "\nTotal: "sum}'
# 只看二级目录的数据
find /var -xdev -type f | cut -d / -f 3 | sort | uniq -c | sort -n | awk '{sum+=$1;print $0;}END{print "\nTotal: "sum}'
#100 Linux 网络:开放端口范围
LinuxNetwork Linux 2023-03-03线上环境,有一个服务启动时,四个进程只成功了三个,检查发现端口被占用。
再一看,是被另外三个进程中的一个连接 MongoDB 占用了。
# 查看
cat /proc/sys/net/ipv4/ip_local_port_range
1024 65000
$ sysctl net.ipv4.ip_local_port_range
net.ipv4.ip_local_port_range = 1024 65000
PS:查了一下,个人机器(Ubuntu)上配置的是:32768 60999
把下限往上提到 20000,避开服务常用接口:
# 临时配置
echo "20000 65000" > /proc/sys/net/ipv4/ip_local_port_range
sysctl -w net.ipv4.ip_local_port_range="20000 65000"
# 持久配置
vim /etc/sysctl.conf
#99 dd 替代品
Linux 2022-12-25#98 bash 上下键搜索历史记录
Linux Bash 2022-12-16我一直用 zsh + omz,但是毕竟 bash 才是大多数情况下的默认 Shell。
zsh 和 bash 都是用上下键来搜索历史记录,但是不同的是,zsh 会利用已经输入部分做前缀匹配,而 bash 不会,只是简单的上一条、下一条。
今天学会一个方法(Bash history search, partial + up-arrow):
bind '"\e[A": history-search-backward'
bind '"\e[B": history-search-forward'
凑活凑活吧。
已经加到我个人的 bash 配置中。
#97 转载:Linux/UNIX 编程如何保证文件落盘
Linux 2022-11-10我们编写程序 write 数据到文件中时,其实数据不会立马写入磁盘,而是会经过层层缓存。每层缓存都有自己的刷新时机,每层缓存都刷新后才会写入磁盘。这些缓存的存在是为了加速读写操作,因为如果每次读写都对应真实磁盘操作,那么读写的效率会大大降低。带来的坏处是如果期间发生掉电或者别的故障,还未写入磁盘的数据就丢失了。对于数据安全敏感的应用,比如数据库,比如交易程序,这是无法忍受的。所以操作系统提供了保证文件落盘的机制。我们来看下这些机制的原理和使用。
#96 关于 Linux 发行版
Linux 操作系统 2022-08-28#95 重启 GNOME
Linux GNOME 2022-05-17#94 mpv 播放器
Linux 视频 2022-04-04#93 HTTP 超时相关的疑问
Linux HTTP 2022-02-25今天发现一个奇怪的现象,相同的代码在 CentOS 7 服务器上发起 HTTP 请求 3 秒之后超时,报 “TimeoutError: [Errno 110] Connection timed out”。
在我本地就按我们的定义的超时时间 5 秒超时,报 “tornado.simple_httpclient.HTTPTimeoutError: Timeout while connecting”。