linux小技巧:文件句柄排查与乱码文件名删除
前言
攒了几个 linux 小技巧,单独发太碎,合在一起记录:文件句柄占用排查(句柄打满的锅十有八九是它)、TIME_WAIT 过多的内核参数、还有删除乱码文件名文件。
1、文件句柄排查
服务报 Too many open files 的时候,先找到是谁把句柄吃光的:
|
|
调大句柄上限,root 登录:
……一位Java开发者,喜欢研究技术,同时也在学习Golang和Python中,对服务器、Linux使用比较熟悉。欢迎添加技术交流QQ群:655158296
攒了几个 linux 小技巧,单独发太碎,合在一起记录:文件句柄占用排查(句柄打满的锅十有八九是它)、TIME_WAIT 过多的内核参数、还有删除乱码文件名文件。
服务报 Too many open files 的时候,先找到是谁把句柄吃光的:
|
|
调大句柄上限,root 登录:
……做后台系统或数据报表时经常碰到广告投放侧的术语:CPA、CPS、CPM、CPT、CPC。五个缩写长得像,区别全在「按什么付费」。这篇一次讲清——按付费锚点从「展示」到「成交」排列,正好是一条转化漏斗。
CPM(Cost Per Mille,每千人成本):按展示付费,只要展示了广告主的广告内容,每满一千次曝光就计一次费。品牌广告主用得最多——他们买的是「让更多人看到」。
……容灾的一些名词、概念介绍
容灾恢复能力的关键指标
是指业务系统所允许的在灾难过程中的最大数据丢失量,用来衡量容灾系统的数据冗余备份能力。
是指信息系统从灾难状态恢复到可运行状态所需的时间,用来衡量容灾系统的业务恢复能力。
我国的国家标准《GB20988-2007-T 信息安全技术信息系统灾难恢复规范》对灾备数据中心根据RPO与RTO两项指标分成了6个相应的等级,如下所示:
手机端调测H5页面是比较麻烦的,需要借助腾讯的vConsole神器
下载地址: https://github.com/Tencent/vConsole.git
|
|
如下图:
当前 vConsole 的版本号。
例子:
|
|
配置项。
| 键名 | 类型 | 可选 | 默认值 | 描述 |
|---|---|---|---|---|
| defaultPlugins | Array | true | [‘system’, ’network’, ’element’, ‘storage’] | 需要自动初始化并加载的内置插件。 |
| onReady | Function | true | 回调方法,当 vConsole 完成初始化并加载完内置插件后触发。 | |
| onClearLog | Function | true | 回调方法,点击 Log 或 System 面板的 “Clear” 按钮后出发。 | |
| maxLogNumber | Number | true | 1000 | 超出数量上限的日志会被自动清除。 |
| maxNetworkNumber | Number | true | 1000 | 超出数量上限的请求记录会被自动清除。 |
| disableLogScrolling | Boolean | true | 若为 false,有新日志时面板将不会自动滚动到底部。 |
|
| theme | String | true | ’light’ | 主题颜色,可选值为 ’light' |
| target | String, HTMLElement | true | document.documentElement |
挂载到的节点,可为 HTMLElement 或 CSS selector。 |
例子:
……mongodb安装成功后的初始化操作,安装步骤比较简单略过不讲
|
|
|
|
|
|
|
|
|
|
| 命令 | 含义 |
|---|---|
| show dbs | 显示数据库列表 |
| show collections | 显示当前数据库中的集合(类似关系数据库中的表) |
| show users | 显示用户 |
| use dbname | 切换当前数据库,这和MS-SQL里面的意思一样 |
| db.help() | 显示数据库操作命令,里面有很多的命令 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
当然name也可以用true或false,当用true的情况下河name:1效果一样,如果用false就是排除name,显示name以外的列信息。
……Mydumper是一个针对MySQL和Drizzle的高性能多线程备份和恢复工具。开发人员主要来自MySQL,Facebook,SkySQL公司。性能比自带的mysqldump强劲
github: https://github.com/mydumper/mydumper
redhat、centos举例
|
|
|
|
|
|
|
|
|
|
|
|
| 参数 | 说明 |
|---|---|
| -B | –database 要导出的dbname |
| -T | –tables-list 需要导出的表名,导出多个表需要逗号分隔,t1[,t2,t3 ….] |
| -o | –outputdir 导出数据文件存放的目录,mydumper会自动创建 |
| -s | –statement-size 生成插入语句的字节数, 默认1000000字节 |
| -r | –rows Try to split tables into chunks of this many rows. This option turns off –chunk-filesize |
| -F | –chunk-filesize 切割表文件的大小,默认单位是 MB ,如果表大于 |
| -c | –compress 压缩导出的文件 |
| -e | –build-empty-files 即使是空表也为表创建文件 |
| -x | –regex 使用正则表达式匹配 db.table |
| -i | –ignore-engines 忽略的存储引擎,多个值使用逗号分隔 |
| -m | –no-schemas 只导出数据,不导出建库建表语句 |
| -d | –no-data 仅仅导出建表结构,创建db的语句 |
| -G | –triggers 导出触发器 |
| -E | –events 导出events |
| -R | –routines 导出存储过程和函数 |
| -k | –no-locks 不执行临时的只读锁,会导致备份不一致 。 WARNING: This will cause inconsistent backups –less-locking 最小化在innodb表上的锁表时间 –butai |
| -l | –long-query-guard 设置长时间执行的sql 的时间标准 |
| -K | –kill-long-queries 将长时间执行的sql kill |
| -D | –daemon 以守护进程的方式执行 |
| -I | –snapshot-interval 创建导出快照的时间间隔,默认是 60s ,该参数只有在守护进程执行的时候有用。 |
| -L | –logfile指定mydumper输出的日志文件,默认使用控制台输出。 –tz-utc SET TIME_ZONE=’+00:00’ at top of dump to allow dumping of TIMESTAMP data when a server has data in different time zones or data is being moved between servers with different time zones, defaults to on use –skip-tz-utc to disable. –skip-tz-utc –use-savepoints 使用savepoints 减少MDL 锁事件 需要 SUPER 权限 –success-on-1146 Not increment error count and Warning instead of Critical in case of table doesn |
| 参数 | 说明 |
|---|---|
| -d | –directory 备份文件的文件夹 |
| -q | –queries-per-transaction 每次事物执行的查询数量,默认是1000 |
| -o | –overwrite-tables 如果要恢复的表存在,则先drop掉该表,使用该参数,需要备份时候要备份表结构 |
| -B | –database 需要还原的数据库 |
| -e | –enable-binlog 启用还原数据的二进制日志 |
| -h | –host The host to connect to |
| -u | –user Username with privileges to run the dump |
| -p | –password User password |
| -P | –port TCP/IP port to connect to |
| -S | –socket UNIX domain socket file to use for connection |
| -t | –threads 还原所使用的线程数,默认是4 |
| -C | –compress-protocol 压缩协议 |
| -V | –version 显示版本 |
| -v | –verbose 输出模式, 0 = silent, 1 = errors, 2 = warnings, 3 = info, 默认为2 |
metadata文件存储了binlog位置点和备份开始结束的时间
……如果不使用最新版本的mysql,但是低版本的mysql官方不提供编译好的安装包,只能自己编译安装了。以下步骤和参数针对5.6、5.7生效,新版本有变动请阅读官方文档介绍。
版本停更提示:5.6 已于 2021-02、5.7 已于 2023-10 结束官方支持(EOL),两者均不再有安全补丁,新项目请直接上 8.0/8.4 LTS。老库升级前注意 8.0 的行为差异:
……
java OOM的种类整理
|
|
这种是java堆内存不够,一个原因是真不够,另一个原因是程序中有死循环
如果是java堆内存不够的话,可以通过调整JVM下面的配置来解决:
-Xms3062m
-Xmx3062m
|
|
JDK6新增错误类型,当GC为释放很小空间占用大量时间时抛出;一般是因为堆太小,导致异常的原因,没有足够的内存。
……朋友弄了一批香橙派的板子,给我做测试,拿了板子、CF卡、电源后开启了试玩,通过配置查看,香橙派比草莓派配置还强劲一些,国产的还不错,不过生态没草莓派完善,对新手可能没健全的指导,稍显不友好,但是对于我这种职业开发人员来说,小case,所以这里个人觉得香橙派还是很不错的
烧录系统镜像
1、准备一个CF读卡器
2、安装Win32DiskImager,给CF卡格式化,其实可以免了直接进入下一步,最初以为跟U盘一样要格式化所以多安装了这个@_@,其实下面ethcher更好用
3、安装ethcher,给CF卡烧录系统的软件
4、准备网线和hub一个,或者用hdmi网线连显示器,作为输出端,烧录后需要登录板子系统进行一些操作,我选择的是ssh方式登录,所以准备网线和hub,如果路由器网口多不用hub也可以,不过朋友测试的是8套香橙派集群,必须要hub
| 注解 | 说明 | 功能 |
|---|---|---|
| @AssertFalse | Boolean,boolean | 验证注解的元素值是false |
| @AssertTrue | Boolean,boolean | 验证注解的元素值是true |
| @NotNull | 任意类型 | 验证注解的元素值不是null |
| @Null | 任意类型 | 验证注解的元素值是null |
| @Min(value=值) | BigDecimal,BigInteger, byte,short, int, long,等任何Number或CharSequence(存储的是数字)子类型 | 验证注解的元素值大于等于@Min指定的value值 |
| @Max(value=值) | 和@Min要求一样 | 验证注解的元素值小于等于@Max指定的value值 |
| @DecimalMin(value=值) | 和@Min要求一样 | 验证注解的元素值大于等于@ DecimalMin指定的value值 |
| @DecimalMax(value=值) | 和@Min要求一样 | 验证注解的元素值小于等于@ DecimalMax指定的value值 |
| @Digits(integer=整数位数, fraction=小数位数) | 和@Min要求一样 | 验证注解的元素值的整数位数和小数位数上限 |
| @Size(min=下限, max=上限) | 字符串、Collection、Map、数组等 | 验证注解的元素值的在min和max(包含)指定区间之内,如字符长度、集合大小 |
| @Past | java.util.Date,java.util.Calendar;Joda Time类库的日期类型 | 验证注解的元素值(日期类型)比当前时间早 |
| @Future | 与@Past要求一样 | 验证注解的元素值(日期类型)比当前时间晚 |
| @NotBlank | CharSequence子类型 | 验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的首位空格 |
| @Length(min=下限, max=上限) | CharSequence子类型 | 验证注解的元素值长度在min和max区间内 |
| @NotEmpty | CharSequence子类型、Collection、Map、数组 | 验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0) |
| @Range(min=最小值, max=最大值) | BigDecimal,BigInteger,CharSequence, byte, short, int, long等原子类型和包装类型 | 验证注解的元素值在最小值和最大值之间 |
| @Email(regexp=正则表达式,flag=标志的模式) | CharSequence子类型(如String) | 验证注解的元素值是Email,也可以通过regexp和flag指定自定义的email格式 |
| @Pattern(regexp=正则表达式,flag=标志的模式) | String,任何CharSequence的子类型 | 验证注解的元素值与指定的正则表达式匹配 |
| @Valid | 任何非原子类型 指定递归验证关联的对象;如用户对象中有个地址对象属性,如果想在验证用户对象时一起验证地址对象的话,在地址对象上加@Valid注解即可级联验证 |