每 天 都 要 很 哇 塞 ~ ~
生活本质本该如此?一半是回忆,一半是继续 生活本质本该如此?一半是回忆,一半是继续
Welcome to My Website ~~
**⭐️⭐️⭐️ Nginx ** 官网地址:http://nginx.org/
环境说明 1 2 3 4 5 6 ubuntu@VM-0-12-ubuntu:~$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 18.04.4 LTS Release: 18.04 Codename: bionic 项目背景 Nginx 一般有3个版本:
Mainline version: 是Nginx目前主力研发的版本。 Stable version: 是最新的稳定版本,主要用在生产环境。 Legacy version: 稳定的老版本。 项目安装 依赖安装 源码编译依赖 **gcc 环境,需要安装 gcc、g++**包。 部分 Nginx 模块依赖 zlib、pcre、openssl库,需要安装。 ⭐️ 以为安装过程需要root权限,所以选择root用户安装。 升级apt-get软件包 1 sudo apt-get update && sudo apt-get upgrade 安装nginx的依赖包 ** zlib pcre openssl**(可以源码安装也可以直接系统安装)
1 sudo apt-get install libpcre3 libpcre3-dev zlib1g-dev libssl-dev build-essential 下载安装 openssl 源码包 1 2 3 4 5 6 7 8 9 # 下载 wget http://www.
⭐️⭐️⭐️ Cronsun是分布式任务系统,不是任务队列 GitHub项目地址:https://github.com/shunfei/cronsun
环境说明 1 2 3 4 5 6 root@xjr-pc:/etc/init.d# lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 18.04.1 LTS Release: 18.04 Codename: bionic 项目背景 crontab 是 Linux 系统里面最简单易用的定时任务管理工具,服务一体化架构下基本使用的都是单一服务器走天下,这种情况下一般都是用 **crontab **管理。随着服务化的推广,服务器的增多,定时任务都是通过 crontab 来定义的,时间长了后会发现存在很多问题:
大量的 crontab 任务散布在各台服务器,带来了很高的维护成本 任务没有时序性执行,甚至失败了很久才发现,需要重试或排查 crontab 分散在很多集群上,日志也是散落在不同服务,即便 ELK 收集也不太方便 crontab 存在单点问题,对于不能重复执行的定时任务很伤脑筋 crontab 任务的误删,恢复存在巨大难度,淘汰的弃用任务复杂度过高 crontab 任务随着服务迁移而迁移时,有着繁琐的配置 crontab 不支持动态配置定时任务。。。 等等。。。 项目的选择 一个开源项目:cronsun,也就是本文介绍的主角,通过试用,发现非常契合我们当前的使用场景,介绍如下: cronsun 是一个分布式任务系统,单个节点和 Linux 机器上的 crontab 近似。是为了解决多台 Linux 机器上 crontab 任务管理不方便的问题,同时提供任务高可用的支持(当某个节点死机的时候可以自动调度到正常的节点执行)。支持界面管理机器上的任务,支持任务失败邮件提醒,安装简单,使用方便,是替换 crontab 一个不错的选择。 Github 地址: GitHub - shunfei/cronsun: A Distributed, Fault-Tolerant Cron-Style Job System.
Linux目录大小统计
Linux下统计指定目录下的文件目录和文件的大小(方便日志的清理等)
Mysql表记录数量查询 连接 Mysql 服务,遍历指定的数据库的所有表,Count(*) 查看所有表记录的数量,然后有大到小排序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 #!/bin/bash # MySQL连接信息 MYSQL_USER="root" MYSQL_PASSWORD="xjrmd@2022" MYSQL_HOST="192.168.0.254" MYSQL_DB="moda" MYSQL_PORT=3316 # 连接到MySQL并获取所有表名 tables=$(mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -h$MYSQL_HOST -P$MYSQL_PORT $MYSQL_DB -e "SHOW TABLES;" | awk '{if (NR!=1) {print $1}}') # 创建一个数组来存储表名和记录数量 table_counts=() # 遍历所有表,计算记录数量并存储在数组中 for table in $tables do count=$(mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -h$MYSQL_HOST -P$MYSQL_PORT $MYSQL_DB -e "SELECT COUNT(*) FROM $table;" | awk 'NR!
前言 & 背景 背景: 最近服务器把一个 socketIO 项目的 server 端,wss(https) 协议改到用 nginx 转发;随后查询 Nginx 的日志记录发现出现了很多错误日志:提示 Too many open files; 猜测: http请求结束后,打开的文件描述符会被自动关闭,所以程序中应当不存在没有关闭文件描述符的情况。猜测就是系统方面的问题了。 修复 确定系统核心允许文件打开的数量: Ubuntu 上默认值一般远超过1024所以一般是不用修改的
1 $ sysctl -n -e fs.file-max 如果需要修改调整,可以编辑 /etc/sysctl.conf 这个文件
1 2 3 4 vim /etc/sysctl.conf # 加上 fs.file-max 的设置 fs.file-max = 100000 重新载入核心配置
1 sysctl -p 有关系统核心配置可以查看相应的man手册:man sysctl,man sysctl.conf。 修改系统限制 修改 /etc/security/limits.conf 文件,设置打开的文件数量上限。(系统级别的)
1 2 * soft nofile 10240 * hard nofile 15360 其中第一行soft表示所有用户打开文件的数量限制为10240,如果超过这个数字则提示警告信息,但是依然可以打开文件。 第二行hard表示最大的打开文件数量不能超过15360,如果超过这个数字,则无法打开文件。 📢:根据实际情况,全局配置部分系统好像没有生效(具体原因还不清楚);要改成针对某个用户进行设置才能成功;如下:
概念 什么是LVM LVM(Logical Volume Manager),即逻辑卷管理,是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。通过LVM系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分区连接为一个整块的卷组(volume group),形成一个存储池。管理员可以在卷组上随意创建逻辑卷组(logical volumes),并进一步在逻辑卷组上创建文件系统。管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配。当系统添加了新的磁盘,通过LVM管理员就不必将磁盘的文件移动到新的磁盘上以充分利用新的存储空间,而是直接扩展文件系统跨越磁盘即可。
什么是PE LVM 默认使用 4MB 的 PE 区块,而 LVM 的 LV 在 32 位系统上最多仅能含有 65534 个 PE(lvm1 的格式),因此默认的 LVM 的 LV 会有 4M*65534/(1024M/G)=256G。
什么是PV 物理卷即物理磁盘分区就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。若是想要使用LVM来管理这个分区,可使用fdisk将其ID改成LVM能够识别的值,即8e。
什么是VG PV的集合,所谓的 LVM 大磁盘就是将许多 PV 整合成 VG ,所以 VG 就是 LVM 组合起来的大磁盘! 那么这个大磁盘最大可以到多少容量呢?这与下面要说明的PE 以及 LVM 的格式版本有关,在默认的情况下, 使用 32位的 Linux 系统时,基本上 LV最大仅能支持到 65534 个 PE 而已,若使用默认的 PE 为 4MB 的情况下, 最大容量则仅能达到约 256GB 而已~ 不过,这个问题在 64位的 Linux 系统上面已经不存在了!LV 几乎没有啥容量限制了!
实际应用 背景: