《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,
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章