日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux的php优化,linux优化转载

發布時間:2025/3/20 linux 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux的php优化,linux优化转载 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. Open File Descriptors

Linux在系統調用,大量的系統調用都依賴于文件描述符,而文件描述符可分配給進程的最大大小由資源限制來定義。

因此,如果文件描述符大小不夠,或有不正常網絡連接(Socket也算)、文件IO沒有關閉并釋放出文件描述符。也可以說是文件句柄(File Operator),會導致出現Too many open files的錯誤。

該錯誤很常見,因此OP幾乎都有做優化。

使用如下命令可以查看系統相關的配置:

ulimit -u 查看open files設置

ulimit -a 查看所有配置

ulimit -u 65535 臨時修改open files為65535

ulimit -n 65536 用戶可以同時打開的最大文件數(max open files)

lsof -p pid ID 查看某進程當前打開的文件資源

針對所有用戶及session有效的長期修改方法為:

$ sudo vim /etc/security/limits.conf

# allow all users to open 100000 files

# alternatively, replace * with an explicit username

* soft nofile 100000 #限制單個進程最大文件句柄數

* hard nofile 100000

同時需要修改/etc/sysctl.conf,設置整個系統最大文件句柄數,運行sysctl -p生效

# /etc/sysctl.conf

# Increase system file descriptor limit

fs.file-max = 100000

2TCP time wait間隔指定的時間長度,一個socket在等待FIN數據包從發送者發送時強行關閉。如果TCP沒有進入CLOSED狀態,主動關閉在發送最后一個ack后,就會進入TIME_WAIT。

這在Cache軟件里最為常見,但其它Server也存在。

net.ipv4.tcp_fin_timeout = 30 ?保持FIN-WAIT-2狀態時間。

net.ipv4.tcp_keepalive_time = 1200

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_tw_reuse = 1 開啟重用。允許將TIME-WAIT sockets重新用于新的TCP連接,默認0,表示關閉

net.ipv4.tcp_tw_recycle = 1 開啟TCP連接中TIME-WAIT sockets的快速回收,默認為0,表示關閉。

net.ipv4.ip_local_port_range = 1024 ? ?65000

# 表示用于向外連接的端口范圍。

# 缺省情況下很小:32768到61000,改為18000到65535。

net.ipv4.tcp_max_syn_backlog = 8192 表示SYN隊列的長度,默認1024,可以容納更多等待連接的網絡連接數。

net.ipv4.tcp_max_tw_buckets = 5000

# 表示系統同時保持TIME_WAIT套接字最大數量.

# 如果超出TIME_WAIT套接字將立刻被清除并打印警告信息。默認為180000,改為5000。

理解服務器tcp狀態

10

SYN_SEND ? ? 請求服務端建立連接。

SYN_RECEIVED 服務器接收到了來自客戶端的SYN。

ESTABLISHED ?客戶端接收到了服務端的SYN,會話建立完成。

LISTEN ? ? 服務器端開始接收連接。

FIN_WAIT_1 ? 指示活動結束。

TIMED_WAIT ? 客戶端在活動結束后將進入此狀態。

CLOSE_WAIT ? 表示被動關閉。服務器只是從客戶端收到第一個翼片。

FIN_WAIT_2 ? 客戶端從服務器收到其第一個 FIN 的確認。

LAST_ACK ? ? 發送自己的FIN后進入此狀態。

CLOSED ? ? ? 服務器從客戶端收到 ACK,連接已關閉。

附趙巖和我whoisd上面總結的

可以通過系統的sysctl.conf配置文件進行優化

1、減少處于FIN-WAIT-2連接狀態的時間,使系統可以處理更多的連接。

net.ipv4.tcp_fin_timeout = 2

如果由本端要求關閉,這個參數決定了它保持在FIN-WAIT-2狀態的時間。

對端可以出錯并永遠不關閉連接,甚至意外當機,缺省值是60秒。

內核的通常值是180秒,可以按這個設置,但要記住的是,即使你的機器是一個輕載的WEB服務器,也有因為大量的死套接字而內存溢出的風險,FIN-WAIT-2的危險性比FIN-WAIT-1要小,因為它最多只能吃掉1.5K內存,但是它們的生存期長些。

2、以下兩參數可解決生產場景中大量連接的Web(cache)服務器中TIME_WAIT過多問題。

net.ipv4.tcp_tw_reuse = 1

表示開啟重用。允許將TIME-WAIT sockets重新用于新的 TCP 連接,默認為 0 表示關閉。

3、打開TIME-WAIT重用及回收功能。

net.ipv4.tcp_tw_recycle = 1

表示開啟TCP連接中TIME-WAIT sockets的快速收回功能,默認為 0 ,表示關閉。

4、當keepalive起用的時候,TCP發送keepalive消息的頻度,缺省是2小時,改為20分鐘。

net.ipv4.tcp_keepalive_time = 600

5、允許系統打開的端口范圍

net.ipv4.ip_local_port_range = 4000 ? ?65000

表示用于向外連接的端口范圍。缺省情況下很小:32768到61000,改為4000到65000。

6、提高系統支持的最大SYN半連接數(默認1024)

net.ipv4.tcp_max_syn_backlog = 16384

表示SYN隊列的長度,默認為1024,加大隊列長度為16384,可以容納最多等待連接的網絡連接數。

7、系統同時保持TIME_WAIT的最大數量

net.ipv4.tcp_max_tw_buckets = 360000

表示系統同時保持TIME_WAIT的最大數量,如果超過這個數字,TIME_WAIT將立刻被清除并打印警告信息。默認為180000,改為 5000。

對于Apache、Nginx等服務器,上幾行的參數可以很好地減少TIME_WAIT數量,但是對于Squid,效果卻不大。此項參數可以控制TIME_WAIT的最大數量,避免Squid服務器被大量的TIME_WAIT拖死。

8、路由緩存刷新頻率,當一個路由失敗后多長時間跳到另一個路由,默認是300。

net.ipv4.route.gc_timeout = 100

9、在內核放棄建立連接之前發送SYN包的數量。

net.ipv4.tcp_syn_retries = 1

10、減少系統SYN連接重試次數(默認是5)

net.ipv4.tcp_synack_retries = 1

為了打開對端的連接,內核需要發送一個SYN并附帶一個回應前面一個SYN的ACK。

也就是所謂三次握手中的第二次握手。這個設置決定了內核放棄連接之前發送SYN+ACK包的數量。

11、設置系統對最大跟蹤的TCP連接數的限制

net.ipv4.ip_conntrack_max = 25000000

一個完整的sysctl.conf文件

# /etc/sysctl.conf

# Increase system file descriptor limit

fs.file-max = 100000

# Discourage Linux from swapping idle processes to disk (default = 60)

vm.swappiness = 10

# Increase ephermeral IP ports

net.ipv4.ip_local_port_range = 10000 65000

# Increase Linux autotuning TCP buffer limits

# Set max to 16MB for 1GE and 32M (33554432) or 54M (56623104) for 10GE

# Don't set tcp_mem itself! Let the kernel scale it based on RAM.

net.core.rmem_max = 16777216

net.core.wmem_max = 16777216

net.core.rmem_default = 16777216

net.core.wmem_default = 16777216

net.core.optmem_max = 40960

net.ipv4.tcp_rmem = 4096 87380 16777216

net.ipv4.tcp_wmem = 4096 65536 16777216

# Make room for more TIME_WAIT sockets due to more clients,

# and allow them to be reused if we run out of sockets

# Also increase the max packet backlog

net.core.netdev_max_backlog = 50000

net.ipv4.tcp_max_syn_backlog = 30000

net.ipv4.tcp_max_tw_buckets = 2000000

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_fin_timeout = 10

# Disable TCP slow start on idle connections

net.ipv4.tcp_slow_start_after_idle = 0

# If your servers talk UDP, also up these limits

net.ipv4.udp_rmem_min = 8192

net.ipv4.udp_wmem_min = 8192

# Disable source routing and redirects

net.ipv4.conf.all.send_redirects = 0

net.ipv4.conf.all.accept_redirects = 0

net.ipv4.conf.all.accept_source_route = 0

# Log packets with impossible addresses for security

net.ipv4.conf.all.log_martians = 1

總結

以上是生活随笔為你收集整理的linux的php优化,linux优化转载的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。