常用配置文件格式

配置文件是工程中常用的初始化参数的配置方式,而配置文件的格式有很多种,不同的操作系统、编程语言都会有不同的配置文件的格式,本文罗列了一些常见的配置文件的格式。

不同的配置文件格式有不同的用户友好性, 对于功能的支持也有简单和复杂之分,很难简单说那种配置文件是最好的,有时候需要从多个方面去考虑, 比如Windows较早的开发喜欢使用int、java喜欢使用properties、通用的编程喜欢yamljson等格式,本文也不会对这些格式进行排名,而是简单介绍一下这些格式,用户可以根据自己的实际情况进行选择。

阅读全文

Mac OS X显示连接

Mac OSX中虽然带了 netstat工具,可是用起来不像Linux下那么爽, 一个是慢 (netstat -p tcp | grep $PORT),二是不能pid,所以stackoverflow上建议使用lsof工具。

所以你可以使用下面的命令:

1
2
3
lsof -n -i4TCP:$PORT | grep LISTEN # Verified on macOS Sierra
lsof -n -iTCP:$PORT | grep LISTEN
lsof -n -i:$PORT | grep LISTEN

为了不显示端口的俗称,你可以加P参数:

1
2
3
lsof -nP -i4TCP:$PORT | grep LISTEN # Verified on macOS Sierra
lsof -nP -iTCP:$PORT | grep LISTEN
lsof -nP -i:$PORT | grep LISTEN

如果不想grep Listen,可以加-sTCP:LISTEN

没有更多要说的了,谨记一下备用。

在Nginx内部自动处理3XX跳转

利用Nginx很容易的配置反向代理和负载均衡的服务, 比如下面的配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
upstream backends {
server 10.0.0.10:8080;
server 10.0.0.11:8080;
server 10.0.0.12:8080;
}
server{
listen 8080;
location / {
proxy_pass http://backends;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

它将客户端的请求转发给后台的三个服务器。 负载均衡的算法又多种, 比如轮询、least_conn、ip_hash、weight等算法,本文重点不介绍这方面的内容,而是下面的需求。

后端服务器可能返回 3XX的redirect的response, Nginx会把这个请求直接返回给客户端。现在我们的需求是让Nginx自己处理这个跳转,而客户端无感知。

阅读全文

tc: 模拟网络异常的工具

Linux Traffic Control (tc)的扩展 Network Emulation (netem)可以很方便的模拟网络不好的情况,一般新的linux内核中(>= 2.6)已经内置了这个工具,可以方便的进行测试。

本文罗列了了 tc的常用的模拟命令, 以备将来使用的时候查询。

主要参考了Linux基金会的官方介绍: netem

阅读全文

谁吃了我的Linux内存?

图片来自 [linuxatemyram](http://www.linuxatemyram.com)

一个经常被问的Linux问题:为啥我的Linux系统没运行多少程序,显示的可用内存这么少?其实Linux与Win的内存管理不同,会尽量缓存内存以提高读写性能,通常叫做Cache Memory。

比较老的文件都会介绍Linux的cache占用很多没关系,因为Linux尽可能利用内存进行缓存,但是缓存的回收也是需要资源的,比较好的一篇文章是Poor Zorro写的Linux内存中的Cache真的能被回收么?

阅读全文