Mysql错误日志、通用查询日志、二进制日志和慢日志的介绍和查看

news2024/12/24 21:17:36

一.日志

1.日志和备份的必要性

日志刷新

2.mysql的日志类型

(1)错误日志

查看当前错误日志和是否记录警告设置

(2)通用查询日志

查看通用查询日志的设置

(3)二进制日志

查看二进制文件的设置,查看最大大小,也可以在my.cnf中通过"max_binlog_size=xx"指定

查看二进制日志文件以及当前正使用哪个文件

读取二进制日志,mysqlbinlog 查看文件具体内容

清空二进制日志文件,删除二进制日志文件

 恢复二进制日志

(4)慢日志

查看慢日志位置和状态

临时开启慢日志,永久开启同理修改my.cnf文件


一.日志

1.日志和备份的必要性

在数据库保存数据时,有时候会因为误删除数据库,意外断电或程序意外终止,由于病毒造成的数据库损坏或丢失,文件系统损坏后,系统进行自检操作,升级数据库时,命令语句不严格,设备故障,自然灾害等不可避免会出现数据丢失或者被破坏,这样情况下,我们必须保证数据的安全性和完整性,就需要使用日志来查看或者恢复数据了。

默认情况下,所有日志创建于mysqld数据目录中。通过刷新日志(mysql下执行flush logs或者命令行执行mysqladmin flush-logs,mysqladmin refresh),你可以强制 mysqld来关闭和重新打开日志文件(或者在某些情况下切换到一个新的日志),如果你正使用MySQL复制功能,从复制服务器将维护更多日志文件,被称为接替日志。

日志刷新

[root@localhost mysql]# ll
-rw-r----- 1 mysql mysql     1782 Jul 23 20:33 binlog.000001
-rw-r----- 1 mysql mysql      593 Jul 24 10:01 binlog.000002

mysql8.0 [SLB]>flush logs;
Query OK, 0 rows affected (0.03 sec)
[root@localhost mysql]# ll
-rw-r----- 1 mysql mysql     1782 Jul 23 20:33 binlog.000001
-rw-r----- 1 mysql mysql      637 Jul 24 10:08 binlog.000002
-rw-r----- 1 mysql mysql      157 Jul 24 10:08 binlog.000003

[root@localhost mysql]# mysqladmin flush-logs -uroot -p
Enter password: 

[root@localhost mysql]# ll
-rw-r----- 1 mysql mysql     1782 Jul 23 20:33 binlog.000001
-rw-r----- 1 mysql mysql      637 Jul 24 10:08 binlog.000002
-rw-r----- 1 mysql mysql      201 Jul 24 10:11 binlog.000003
-rw-r----- 1 mysql mysql      157 Jul 24 10:11 binlog.000004

2.mysql的日志类型

(1)错误日志

错误日志主要记录:服务器启动和关闭过程中的信息、服务器运行过程中的错误信息、事件调度器运行一个时间时产生的信息、在从服务器上启动从服务器进程时产生的信息。

上表参考位置中,如果没有给定名称和路径,mysqld使用错误日志名host_name.err并在数据目录中写入日志文件。如果日志文件不存在,mysql启动或者执行flush logs时会创建新的日志文件。

查看当前错误日志和是否记录警告设置

mysql8.0 [SLB]>show global variables like '%log_error%';
+----------------------------+----------------------------------------+
| Variable_name              | Value                                  |
+----------------------------+----------------------------------------+
| binlog_error_action        | ABORT_SERVER                           |
| log_error                  | /var/log/mysqld.log                    |
| log_error_services         | log_filter_internal; log_sink_internal |
| log_error_suppression_list |                                        |
| log_error_verbosity        | 2                                      |
+----------------------------+----------------------------------------+
5 rows in set (0.00 sec)

mysql8.0 [SLB]>show global variables like '%log_warnings%';
Empty set (0.01 sec)

(2)通用查询日志

记录建立的客户端连接和执行的语句,默认关闭

mysql服务器默认情况下并没有开启通用查询日志。如果需要通用查询日志,可通过修改配置文件来开启:

启动开关:general_log={ON|OFF}

日志文件变量:general_log_file[=/PATH/TO/file]

全局日志开关:log={ON|OFF} 该开关打开后,所有日志都会被启用

记录类型:log_output={TABLE|FILE|NONE},FILE表示将日志存入文件,默认值是FILE;TABLE表示将日志存入数据库,这样日志信息就会被写入到mysql.slow_log表中。mysql数据库支持同时两种日志存储方式,配置的时候以逗号隔开。

因此,要启用通用查询日志,需要至少配置general_log=ON,log_output={TABLE|FILE}。而general_log_file如果没有指定,默认名是host_name.log。

查看通用查询日志的设置

mysql8.0 [SLB]>show global variables like '%general%';
+------------------+------------------------------+
| Variable_name    | Value                        |
+------------------+------------------------------+
| general_log      | OFF                          |
| general_log_file | /var/lib/mysql/localhost.log |
+------------------+------------------------------+
2 rows in set (0.01 sec)

可以通过mysql临时设置开启

mysql8.0 [SLB]>set global general_log=on;
Query OK, 0 rows affected (0.01 sec)

mysql8.0 [SLB]>show global variables like '%general%';
+------------------+------------------------------+
| Variable_name    | Value                        |
+------------------+------------------------------+
| general_log      | ON                           |
| general_log_file | /var/lib/mysql/localhost.log |
+------------------+------------------------------+
2 rows in set (0.04 sec)

永久开启需要更改my.cnf文件,添加内容

general_log=ON
general_log_file=路径和名称

(3)二进制日志

二进制日志包含关于每个更新数据库的语句的执行时间信息。 它不包含不会修改任何数据的语句,例如select,show等。

二进制日志的主要目的是在数据库存在故障时,恢复时能够最大可能地更新数据库(即时点恢复),因为二进制日志包含备份后进行的所有更新。二进制日志还用于在主复制服务器上记录所有将发送给从服务器的语句。

  • 执行后数据非常大此时基于记录来保存
  • 数据是一些即时的比如时间等,需要基于行就保存记录准确的值
  • 两种方式可能一起搭配使用

查看二进制文件的设置,查看最大大小,也可以在my.cnf中通过"max_binlog_size=xx"指定

在my.cnf中使用log-bin [= file_name]来开启二进制日志,使用skip-log-bin=1来关闭二进制日志

mysql8.0 [SLB]>show variables like '%log_bin%';
+---------------------------------+-----------------------------+
| Variable_name                   | Value                       |
+---------------------------------+-----------------------------+
| log_bin                         | ON                          |
| log_bin_basename                | /var/lib/mysql/binlog       |
| log_bin_index                   | /var/lib/mysql/binlog.index |
| log_bin_trust_function_creators | OFF                         |
| log_bin_use_v1_row_events       | OFF                         |
| sql_log_bin                     | ON                          |
+---------------------------------+-----------------------------+
6 rows in set (0.01 sec)

mysql8.0 [SLB]>show variables like 'max_binlog_size';
+-----------------+------------+
| Variable_name   | Value      |
+-----------------+------------+
| max_binlog_size | 1073741824 |
+-----------------+------------+
1 row in set (0.00 sec)

查看二进制日志文件以及当前正使用哪个文件

mysql8.0 [SLB]>show binary logs;
+---------------+-----------+-----------+
| Log_name      | File_size | Encrypted |
+---------------+-----------+-----------+
| binlog.000001 |      1782 | No        |
| binlog.000002 |       637 | No        |
| binlog.000003 |       201 | No        |
| binlog.000004 |       180 | No        |
| binlog.000005 |       778 | No        |
| binlog.000006 |       157 | No        |
+---------------+-----------+-----------+
6 rows in set (0.00 sec)

mysql8.0 [SLB]>show master status;
+---------------+----------+--------------+------------------+-------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000006 |      157 |              |                  |                   |
+---------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

读取二进制日志,mysqlbinlog 查看文件具体内容

mysql8.0 [SLB]>show binlog events in 'binlog.000006';
+---------------+-----+----------------+-----------+-------------+-----------------------------------+
| Log_name      | Pos | Event_type     | Server_id | End_log_pos | Info                              |
+---------------+-----+----------------+-----------+-------------+-----------------------------------+
| binlog.000006 |   4 | Format_desc    |         1 |         126 | Server ver: 8.0.34, Binlog ver: 4 |
| binlog.000006 | 126 | Previous_gtids |         1 |         157 |                                   |
+---------------+-----+----------------+-----------+-------------+-----------------------------------+
2 rows in set (0.00 sec)

mysql8.0 [SLB]>show binlog events in 'binlog.000002' from 4;    ---指定从片段4开始查看
+---------------+-----+----------------+-----------+-------------+--------------------------------------------------------------------------------------------------------------------+
| Log_name      | Pos | Event_type     | Server_id | End_log_pos | Info                                                                                                               |
+---------------+-----+----------------+-----------+-------------+--------------------------------------------------------------------------------------------------------------------+
| binlog.000002 |   4 | Format_desc    |         1 |         126 | Server ver: 8.0.34, Binlog ver: 4                                                                                  |
| binlog.000002 | 126 | Previous_gtids |         1 |         157 |                                                                                                                    |
| binlog.000002 | 157 | Anonymous_Gtid |         1 |         234 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS'                                                                               |
| binlog.000002 | 234 | Query          |         1 |         339 | create database SLB /* xid=18 */                                                                                   |
| binlog.000002 | 339 | Anonymous_Gtid |         1 |         418 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS'                                                                               |
| binlog.000002 | 418 | Query          |         1 |         593 | use `SLB`; create table t1 ( id int primary key, name varchar(10) not null, dpart char(20) not null) /* xid=261 */ |
| binlog.000002 | 593 | Rotate         |         1 |         637 | binlog.000003;pos=4                                                                                                |
+---------------+-----+----------------+-----------+-------------+--------------------------------------------------------------------------------------------------------------------+
7 rows in set (0.00 sec)


/*
Log_name表示当前事件所在的binlog文件名称
Pos当前事件的开始位置,每个事件都占用固定的字节大小
Event_type,在event_type列中,在当前binlog v4版本中,每个binlog文件总是以Format Description Event作为开始,以Rotate Event结束作为结束。
    Format_desc,也就是我们所说的Format Description Event,是binlog文件的第一个事件
    Previous_gtids,该事件完整名称为PREVIOUS_GTIDS_LOG_EVENT,是在之前的binlog文件中,已经执行过的GTID。需要我们开启GTID选项,这个事件才会有值。
    Rotate,Rotate Event是每个binlog文件的结束事件
Server_id表示产生这个事件的mysql server_id,通过设置my.cnf中的server-id选项进行配置。
End_log_position表示下一个事件的开始位置。
Info表示1当前事件的描述信息。
*/

[root@localhost mysql]# mysqlbinlog binlog.000006

清空二进制日志文件,删除二进制日志文件

mysql8.0 [SLB]> reset master; ---master表示当前使用的
mysql8.0 [SLB]> purge binary/master logs to '日志';  ---删除此日志之前的所有日志文件
mysql8.0 [SLB]> purge binary/master logs before 'date';  ---删除某个时间之前的所有日志文件

 恢复二进制日志

在数据库出现意外丢失数据时,使用mysqlbinlog工具从指定的时间点开始(比如,最后一次备份)直到如今或者是到另外一个指定的时间点的日志中恢复数据。

  • 创建数据库,创建表,查看当前使用的日志文件和信息
mysql8.0 [(none)]>create database SLB1;
Query OK, 1 row affected (0.02 sec)

mysql8.0 [(none)]>use SLB1;
Database changed
mysql8.0 [SLB1]>create table t1 (
    -> id int primary key,
    -> name char(20));
Query OK, 0 rows affected (0.04 sec)

mysql8.0 [SLB1]>show master status;
+---------------+----------+--------------+------------------+-------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000002 |      741 |              |                  |                   |
+---------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

mysql8.0 [SLB1]>show binlog events in 'binlog.000002'\G;
*************************** 1. row ***************************
   Log_name: binlog.000002
        Pos: 4
 Event_type: Format_desc
  Server_id: 1
End_log_pos: 126
       Info: Server ver: 8.0.34, Binlog ver: 4
*************************** 2. row ***************************
   Log_name: binlog.000002
        Pos: 126
 Event_type: Previous_gtids
  Server_id: 1
End_log_pos: 157
       Info: 
*************************** 3. row ***************************
   Log_name: binlog.000002
        Pos: 157
 Event_type: Anonymous_Gtid
  Server_id: 1
End_log_pos: 234
       Info: SET @@SESSION.GTID_NEXT= 'ANONYMOUS'
*************************** 4. row ***************************
   Log_name: binlog.000002
        Pos: 234
 Event_type: Query
  Server_id: 1
End_log_pos: 339
       Info: create database SLB /* xid=18 */
*************************** 5. row ***************************
   Log_name: binlog.000002
        Pos: 339
 Event_type: Anonymous_Gtid
  Server_id: 1
End_log_pos: 416
       Info: SET @@SESSION.GTID_NEXT= 'ANONYMOUS'
*************************** 6. row ***************************
   Log_name: binlog.000002
        Pos: 416
 Event_type: Query
  Server_id: 1
End_log_pos: 524
       Info: create database SLB1 /* xid=257 */
*************************** 7. row ***************************
   Log_name: binlog.000002
        Pos: 524
 Event_type: Anonymous_Gtid
  Server_id: 1
End_log_pos: 601
       Info: SET @@SESSION.GTID_NEXT= 'ANONYMOUS'
*************************** 8. row ***************************
   Log_name: binlog.000002
        Pos: 601
 Event_type: Query
  Server_id: 1
End_log_pos: 741
       Info: use `SLB1`; create table t1 (
id int primary key,
name char(20)) /* xid=262 */
8 rows in set (0.00 sec)
  • 删除表和数据,并刷新日志
mysql8.0 [SLB1]>drop table t1;
Query OK, 0 rows affected (0.03 sec)

mysql8.0 [SLB1]>drop database SLB1;
Query OK, 0 rows affected (0.02 sec)

mysql8.0 [(none)]>flush logs;
Query OK, 0 rows affected (0.03 sec)

mysql8.0 [(none)]>show databases;
+--------------------+
| Database           |
+--------------------+
| SLB                |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)
  • 我当前使用的是binlog.000002,就去二进制文件中查看binlog.000002的内容
mysql8.0 [SLB1]>show variables like '%log_bin%';    ---就去/var/lib/mysql下查找
+---------------------------------+-----------------------------+
| Variable_name                   | Value                       |
+---------------------------------+-----------------------------+
| log_bin                         | ON                          |
| log_bin_basename                | /var/lib/mysql/binlog       |
| log_bin_index                   | /var/lib/mysql/binlog.index |
| log_bin_trust_function_creators | OFF                         |
| log_bin_use_v1_row_events       | OFF                         |
| sql_log_bin                     | ON                          |
+---------------------------------+-----------------------------+
6 rows in set (0.00 sec)


[root@localhost mysql]# pwd
/var/lib/mysql
[root@localhost mysql]# ll | grep binlog.000002
-rw-r----- 1 mysql mysql     1170 Jul 24 12:57 binlog.000002
[root@localhost mysql]# mysqlbinlog binlog.000002
  • 找到我们删除表或库的那个时间,根据以下命令来恢复
[root@localhost mysql]# mysqlbinlog --stop-datetime="23-07-24 12:56:45" binlog.000002 | mysql -uroot -p

 

  •  查看
mysql8.0 [(none)]>show databases;
+--------------------+
| Database           |
+--------------------+
| SLB                |
| SLB1               |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
6 rows in set (0.00 sec)
Database changed
mysql8.0 [SLB1]>show tables;
+----------------+
| Tables_in_SLB1 |
+----------------+
| t1             |
+----------------+
1 row in set (0.01 sec)

(4)慢日志

记录所有执行时间超过long_query_time秒的所有查询或不使用索引的查询,默认关闭

mysql8.0 [SLB]>show variables like "%query_time%";   ---查询超过默认的10s,可成为慢查询
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.05 sec)

MySQL如果启用了 slow_query_log=ON 选项,就会记录执行时间超过long_query_time的查询(初使表锁定的时间不算作执行时间)。my.cnf记录文件为slow_query_log_file[=file_name],如果没有给出file_name值, 默认为主机名,后缀为-slow.log。如果给出了文件名,但不是绝对路径名,文件则写入数据目录。

查看慢日志位置和状态

mysql8.0 [SLB]>show variables like '%query_log%';
+------------------------------+-----------------------------------+
| Variable_name                | Value                             |
+------------------------------+-----------------------------------+
| binlog_rows_query_log_events | OFF                               |
| slow_query_log               | ON                                |
| slow_query_log_file          | /var/lib/mysql/localhost-slow.log |
+------------------------------+-----------------------------------+
3 rows in set (0.00 sec)

mysql8.0 [SLB]>show variables like 'slow_query_log';
+----------------+-------+
| Variable_name  | Value |
+----------------+-------+
| slow_query_log | OFF   |
+----------------+-------+
1 row in set (0.00 sec)

临时开启慢日志,永久开启同理修改my.cnf文件

mysql8.0 [SLB]>set global slow_query_log=ON;
Query OK, 0 rows affected (0.01 sec)

mysql8.0 [SLB]>show variables like 'slow_query_log';
+----------------+-------+
| Variable_name  | Value |
+----------------+-------+
| slow_query_log | ON    |
+----------------+-------+
1 row in set (0.00 sec)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/785823.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java基础教程】(四十五)IO篇 · 中:转换流、内存流和打印流(探索装饰设计模式与PrintStream类的进阶),文件操作案例实践、字符编码问题~

Java基础教程之IO操作 中 🔹本节学习目标1️⃣ 转换流2️⃣ 案例:文件复制3️⃣ 字符编码4️⃣ 内存流5️⃣ 打印流5.1 打印流设计思想——装饰设计模式5.2 打印流5.3 PrintStream 类的改进 🌾 总结 🔹本节学习目标 掌握内存操作…

C++初阶 - 5.C/C++内存管理

目录 1.C/C的内存分布 2.C语言中动态内存管理方式:malloc、calloc、realloc、free 3.C内存管理方式 3.1 new/delete操作内置类型 3.2 new 和 delete操作自定义类型 4.operator new 与 operator delete 函数(重要点) 4.1 operator new 与…

Go语言开发者的Apache Arrow使用指南:扩展compute包

在本系列文章的第4篇《Go语言开发者的Apache Arrow使用指南:数据操作》[1]中我们遇到了大麻烦:Go的Arrow实现居然不支持像max、min、sum这样的简单聚合计算函数:(,分组聚合(grouped aggregation)就更是“遥不可期”。要想对从CSV读取的数据[2…

如何在代码中用宏定义确定VS编译器版本

我们经常需要将同一个代码文件在不同的编译器下编译,实际上对应着不同的代码,这个时候就可以使用宏定义来进行判断,比如如下代码: #if _MSC_VER >1900 // VS2015或者以上 #ifndef _CRT_SECURE_NO_WARNINGS #define _CRT_SECUR…

第十四届蓝桥杯大赛青少年省赛C++组试题真题 2023年5月

一、选择题 第 1 题 单选题 C中,bool类型的变量占用字节数为 ( )。 A. 1 B. 2 C. 3 D. 4 第 2 题 单选题 以下关于C结构体的说法,正确的是 ( )。 A. 结构体中只能包含成员变量,不能包含成员函数 B. 结构体不能从另一个结构体继承 …

发布npm包流程

发布npm包的步骤如下: 在终端中通过 npm init 命令创建一个新的npm包,按照提示填写包的信息,如包名称、版本、描述、作者、许可证等。 在包的根目录下创建一个 index.js 文件,编写你的代码。 确认你已经注册了npm账号&#xff0…

Vue二次封装axios为插件使用

基本的封装要求:统一 url 配置 统一 api 请求 request (请求)拦截器,例如:带上token等,设置请求头 response (响应)拦截器,例如:错误处理,页面重定向等 根据需要,结合 Vuex 做全局的…

【三维点云处理】顶点、面片、邻接矩阵、邻接距离矩阵以及稀疏存储概念

文章目录 vts和faces基础知识vertices-节点(3是点的三维坐标)faces-面片(3是构成三角形面片的3个点) 邻接矩阵邻接距离矩阵(NN500)稀疏矩阵 vts和faces基础知识 vertices-节点(3是点的三维坐标…

git 实操

首先有安装好的git,安装好后,会在任一目录下右键出现git bash和git gui两个选项 打开git bash,设置好全局变量,用户名和邮箱,设置方法为: git config -- global user.name "xxx" git config --global user.email "xxxxxx.com" 1.创建版本库 git init 命…

Photoshop2023beta常见问题|ps 2023测试版智能AI功能不能用如何解决?

PS beta ai创成式填充用不了怎么办 生成图像出错解决方法?PS 2023最新版本更新了超强大的AI功能,可以一键生成或删除用户选中的内容,这可大大提高了生成图片的效率。生成出来的图片也被公认为质量超高,虽然偶尔可能有点小瑕疵&…

ajax/axios访问后端测试方法

文章目录 1、浏览器执行javascript方法GET请求POST请求 2、Postman测试工具GET请求POST请求 3、idea IDE提供的httpclient4、Apache JMeter 1、浏览器执行javascript方法 GET请求 http://localhost:6060/admin/get/123 POST请求 技巧:打开谷歌浏览器&#xff0c…

混战源起 ChatGPT,中国的 AI 产业怎么样了?

文章目录 前言一、回顾上半年的“百模大战”1.1 什么是“百模大战”1.2 AI大模型对我们的影响 二、中国AI产业现状三、我国在AI产业的前景与挑战结语 前言 北京时间7月13日凌晨,马斯克在Twitter上宣布:“xAI正式成立,去了解现实。”马斯克表示…

【Linux Shell】基础知识

Linux Shell基础知识 一、Linux Shell基础概念1.1 Shell定义1.2 命令行提示符 二、初识Shell2.1 Shell定义2.2 登录Shell相关文件2.3 Shell中的变量变量类型变量的引用单引号\ 与双引号\" \"变量的删除与检查 2.4 Shell中的扩展大括号扩展{ }其他扩展 一、Linux Shel…

STM32MX配置EEPROM(AT24C02)------保姆级教程

———————————————————————————————————— ⏩ 大家好哇!我是小光,嵌入式爱好者,一个想要成为系统架构师的大三学生。 ⏩最近在开发一个STM32H723ZGT6的板子,使用STM32CUBEMX做了很多驱动&#x…

临床检验系统LIS

临床检验系统(Laboratory Information System)是一个能实现检验信息电子化、检验信息管理自动化的网络系统,其主要功能是将检验的实验仪器传出的检验数据经分析后,生成检验报告,通过网络存储在数据库中,使医生能够方便、及时的看到…

助力中小企业数字化改造 象过河把中小企业老板当成“自己人”

燥热的夏日午后,在郑州市国家大学科技园附近的一家咖啡店里约见了象过河软件研发的总负责人象海先生。 温文儒雅、润物无声的象海先生自信豁达、成熟冷静。软件开发技术出身的他,善于通过软件开发定制来帮助中小企业解决各种错综复杂的业务、仓储以及财…

Could not resolve placeholder

本质原因:项目启动未扫描到该配置,一般来说是配置不对 检查方向 1、检查编译后的target包里是否有该配置所在的文件 如果不在就clear,重新编译启动再去检查 2、检查启动的环境是否匹配 编译后的target包下的配置文件名称是否跟启动类的环境…

app流量变现流量分发策略——waterfall技术

waterfall,中文翻译为“瀑布流”,字面意思理解就是“从上往下流”,但“从上到下”这四个字该如何理解? 在广告行业中,waterfall指的是“在无法实时评估每次流量的价值时,基于历史eCPM数据,从上…

Docker OOM处理方式

优质博文:IT-BLOG-CN cicode xxx k8s docker events oom occured告警原因 特别需要注意的是:docker events oom的处理方法不同于java.lang.OutOfMemoryError。 当我们在PAAS/Captain上申请容器实例时,会设置内存Limit。比如容器Flavor为2C4…

【Nodejs】npm的使用

1.包和npm 1.1 什么是包 由于 Node 是一套轻内核的平台,虽然提供了一系列的内置模块,但是不足以满足开发者的需求,于是乎出现了包(package)的概念: 与核心模块类似,就是将一些预先设计好的功能…