简单理解Linux Swap Space
📅 2016-10-20
理解Swap Space #
对服务器进行性能监控,除了CPU, 内存, 磁盘IO,网络外,Swap Space也是值得关注的关键项。
用户进程在内存空间中数据有以下形式:
- 程序代码和共享库
- 文件内容的缓存数据
- 程序使用的堆栈空间
其中前两项都是从文件系统中读取进来的。
Linux本身是一个分页请求系统,用户进程使用的内存需要映射到物理内存。为了更好的使用内存,Linux会对物理内存中的页面进行回收:
...对服务器进行性能监控,除了CPU, 内存, 磁盘IO,网络外,Swap Space也是值得关注的关键项。
用户进程在内存空间中数据有以下形式:
其中前两项都是从文件系统中读取进来的。
Linux本身是一个分页请求系统,用户进程使用的内存需要映射到物理内存。为了更好的使用内存,Linux会对物理内存中的页面进行回收:
...MySQL的多源复制(multi-source replication)允许将一个MySQL从库连接到多个主库,并从每个主库获取和复制数据更改。这种复制拓扑结构可以实现在多个数据库服务器之间进行数据同步和复制。
传统的MySQL复制是单源复制,其中一个主库(也称为主服务器或主节点)将其数据更新记录在二进制日志中,并将这些日志传播给一个或多个从库(也称为从服务器或从节点)。每个从库通过读取主库的二进制日志并应用这些更新来保持与主库的数据同步。
...MySQL的常见复制模式(假设有DB1,DB2,DB3三个MySQL实例):
生产环境常见主从复制,这是最稳健的一种方式;为了切换方便也可选择主主模式,但要注意主主复制必须确保在任何时刻只有一个数据库是master写入状态,否则可能导致数据异常。 链式和环形复制在生产环境很少使用,主要的缺点是随着节点的增加整个复制系统的稳健性会下降。
...在用Go进行数据传输的场景下,例如文件传输或文件存储时,需要将Go的数据例如int转换为[]byte。
得到的[]byte
可以进一步在网络上传输或写入到文件中。这个场景需要借助go标准库中的encoding/binary
包来实现。
encoding/binary
包实现了简单的数字与字节序列的转换以及变长值的编解码。
一个定长值是指要么是固定长度的数字类型(int8, uint8, int16, float32, complex64, …)或者只包含定长值的结构体或者数组。
Docker使用Linux Cgroups限制容器对CPU、内存等资源的使用,防止由于某个容器对资源的过度使用而导致主机上其他容器无法正常运行。 Cgroup是control group的简称,是Linux内核提供的一个特性,用于限制和隔离一组进程对系统资源的使用,包括CPU、内存、block I/O、网络带宽。
...现在一些开源的分布式调用跟踪系统大多都参考了Google的论文《Dapper,大规模分布式系统的跟踪系统》。 这里我们简单学习一下Dapper的基本概念。
分布式调用跟踪系统实际上是随着微服务才火起来的一个概念,当然Google在很多年前已经微服务化了,所以他的分布式跟踪理论应该是最成熟的。 分布式跟踪系统出现的原因简单的说是因为在分布式系统中一次请求中会包含很多的RPC,迫切需要一些可以帮助理解系统行为和分析性能问题的工具,需要断定具体哪个服务拖了后腿。
...分布式一致性协议允许一组服务器节点像一个整体一样工作,允许其中一些节点出现故障也能继续工作下去。正式因为如此,一致性算法在构建大规模分布式软件系统扮演着十分重要角色。Paxos一直是分布式领域内一致性协议的代名词,但Paxos十分难以理解,绝大数实现基于Paxos进行修改才能应用到实际系统中,因此Paxos的具体实现具有不统一性。
...innodb_buffer_pool_size
是使用InnoDB存储引擎时最关键的配置项。InnoDB使用一块专门的内存区域做IO缓存,该缓存既缓存InnoDB的索引块,又会缓存InnoDB的数据块。这个缓存区就是InnoDB Buffer Pool,使用innodb_buffer_pool_size
设置其大小,在保证系统及其他程序有可用内存的情况下,设置的越大,缓存命中率越高,访问InnoDB的磁盘IO越少,性能越好。
MySQL的状态变量显示MySQL服务实例的状态信息,这些状态信息是动态的,包括MySQL服务器连接的会话状态、变量信息等。默认情况下状态变量都是以大写字母开头。
查看MySQL的状态变量:
1show status;
2show session status;
3show global status;
MySQL系统变量是指MySQL服务实例的各种系统变量(包括全局系统变量、会话系统变量、静态变量),这些变量包含MySQL编译时的参数默认值,或者my.cnf配置文件里配置的参数值。系统变量是一个静态的参数,默认情况下系统变量都是小写字母。
...Elasticsearch是面向文档的,文档被序列胡化JSON格式保存在Elasticsearch中。 文档是指存储在索引里的JOSN格式的文档。每个文档由字段组成。 例如:
1{
2 "_index": "book-store",
3 "_type": "book",
4 "_id": "1",
5 "_version": 1,
6 "_score": 1,
7 "_source": {
8 "id": 1,
9 "name": "ElasticSearch Book"
10 }
11}
字段是组成文档的基本元素。例如上面例子中的"name": "ElasticSearch Book"
这个键值对就是一个最基本的字段。
每个文档都有一些元数据字段,用于标注文档的相关信息,如: