《Linux高性能服务器编程》读书笔记:linux服务器程序规范

服务器程序规范,需要强化和遵守的,作者给列了4条规范:

1、Linux服务器程序一般以后台进程形式运行,也就是以daemon守护进程的方式,守护进程的父进程通常是init进程(PID进程为1),作者在7.6 服务程序后台化给出了一个程序的清单,还是很有参考意义的。后台进程形式运行,也就是通过fork一个子进程,结束父进程的方式运行,这样避免很多前台启动,随着操作终端界面的关闭而结束服务器程序的运行;


Linux服务器程序的用户信息也是容易忽略和出问题的地方,UID/EUID/GID/EGID,如果应用程序需要操作某个配置文件,但又没有操作权限就悲剧了,所以需要确定好应用程序文件的权限组,以及可能操作配置文件的权限组很重要;

EUID标识这个应用程序文件的所属id(即文件的所有者的用户id);

EGID的含义与EUID类似,给运行目标程序的组用户提供有效组的权限;

避免应用程序的启动使用root账户启动;


进程组:每个进程都隶属于一个进程组,因此除了PID信息之外,还有进程组ID(PGID),每个进程组都有一个首领进程,其PGID和PID相同。 


2、Linux服务器程序通常有一套日志系统,至少能输出日志到文件,有的高级服务器还能输出日志到专门的UDP服务器,大部分后台进程都在/var/log目录下拥有自己的日志目录。

这里需要关注就是日志的归档,如果使用系统的调试信息输出到/var/log的方式,则归档由系统自动来完成,存在在自定义日志路径的服务器程序,需要关注日志的归档,我们经常有项目中出现打印几十个G的日志,导致服务器磁盘空间被打爆,系统响应缓慢的事故;


3、Linux服务器程序通常是可配置的,通常能处理很多命令行选项,如果一次运行的选项太多,则可以用配置文件进行管理。绝大多数服务器程序都有配置文件,并存放在/etc目录下,比方nginx默认在/etc/nginx/nginx.conf。

系统资源限制,通过使用ulimit命令修改当前shell环境下的软限制或者硬限制,这种修改对该shell启动过的所有后续程序有效,也可以通过修改配置文件来改变系统软限制和硬限制,并且是永久的,比如ulimit: 修改Linux操作系统对一个进程打开的文件句柄数量的限制,配置:

> 命令方式(暂时):ulimit -n xx 修改每个进程可打开的文件数,缺省值是 1024

> 将修改命令写入~/.bashrc 文件,或修改配置文件(永久):vi /etc/security/limits.conf

## 通常优化centos系统的网络参数如下:


终端输入 vim /etc/sysctl.conf 打开配置文件,将下列内容复制进文件后保存。


```text

net.ipv4.ip_local_port_range = 1024 65535

net.core.rmem_max = 16777216

net.core.wmem_max = 16777216

net.ipv4.tcp_rmem = 4096 87380 16777216

net.ipv4.tcp_wmem = 4096 65536 16777216

net.ipv4.tcp_fin_timeout = 10

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_timestamps = 0

net.ipv4.tcp_window_scaling = 0

net.ipv4.tcp_sack = 0

net.core.netdev_max_backlog = 30000

net.ipv4.tcp_no_metrics_save = 1

net.core.somaxconn = 22144

net.ipv4.tcp_syncookies = 0

net.ipv4.tcp_max_orphans = 262144

net.ipv4.tcp_max_syn_backlog = 262144

net.ipv4.tcp_synack_retries = 2

net.ipv4.tcp_syn_retries = 2

vm.overcommit_memory = 1

fs.file-max = 2000000

fs.nr_open = 2000000

```


## 优化句柄数:终端输入 vim /etc/security/limits.conf 打开配置文件,配置如下两项后保存。


```text

*               soft    nofile          1200000

*               hard    nofile          1200000

``` 

4、Linux服务器进程通常会在启动的时候生成一个PID文件并存放在/var/run目录中,以记录该后台进程的PID,

白俊遥博客


请先登录后发表评论
  • 最新评论
  • 总共0条评论