九步走:優化Linux生產伺服器的經驗之談

2020-12-08 IT168

  【IT168 資訊】生產環境下的Linux伺服器有精準、穩定、高效、安全等需求,其優化也是有著很多的竅門。本文分享了九條平時進行Linux生產伺服器優化的經驗,內容涉及郵件伺服器、Web伺服器、網絡配置、內存管理等方面。

  一、時間同步

  生產環境下的伺服器對時間的要求是精準的,我的郵件伺服器的dovecot服務,以前經常因為時間問題自動停止服務,建議編輯

  vim /etc/crontab

  至今每天跟ntp時間伺服器自動對時一次:

  14 04 * * * root /usr/sbin/ntpdate ntp.api.bz > /dev/null 2>&1

  二、啟用內核中的SYN cookie保護:

  echo "1" > /proc/sys/net/ipv4/tcp_syncookies

  執行以下命令使內核配置立馬生效:

  /sbin/sysctl -p

  三、Squid伺服器變慢的解決方法

  如果自己的生產伺服器是squid緩存伺服器,當發現系統變慢或打開網頁變慢時可輸入下列命令:

  netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

  這條命令可以把當前系統的網絡連接狀態分類匯總,由此分析出系統變慢的原因。

  Linux下高並發的Squid伺服器,TCP TIME_WAIT套接字數量經常達到兩、三萬,伺服器很容易被拖死。通過修改Linux內核參數,可以減少Squid伺服器的TIME_WAIT套接字數量。

  vim /etc/sysctl.conf

  增加以下幾行:

  net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_keepalive_time = 1200 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.ip_local_port_range = 1024 65000 net.ipv4.tcp_max_syn_backlog = 8192 net.ipv4.tcp_max_tw_buckets = 5000

  說明:

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

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

  net.ipv4.tcp_fin_timeout = 30 表示如果套接字由本端要求關閉,這個參數決定了它保持在FIN-WAIT-2狀態的時間。

  net.ipv4.tcp_keepalive_time = 1200 表示當keepalive起用的時候,TCP發送keepalive消息的頻度。預設是2小時,改為20分鐘。

  net.ipv4.ip_local_port_range = 1024 65000 表示用於向外連接的埠範圍。預設情況下很小,改為1024到65000。

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

  net.ipv4.tcp_max_tw_buckets = 5000表示系統同時保持TIME_WAIT套接字的最大數量,如果超過這個數字,TIME_WAIT套接字將立刻被清除並列印警告信息。默認為180000,改為5000。對於Apache、Nginx等伺服器,上幾行的參數可以很好地減少TIME_WAIT套接字數量,但是對於Squid,效果卻不大。此項參數可以控制TIME_WAIT套接字的最大數量,避免Squid伺服器被大量的TIME_WAIT套接字拖死。

  執行以下命令使內核配置立馬生效:

  /sbin/sysctl -p

  四、Nginx伺服器的情況

  如果伺服器是Nginx負載均衡器或用於Nginx+PHP5的web伺服器,此二項也必須打開:

  net.ipv4.tcp_tw_reuse = 1 #允許將TIME-WAIT sockets重新用於新的TCP連接

  net.ipv4.tcp_tw_recycle = 1 #開啟TCP連接中TIME-WAIT sockets的快速回收

  執行以下命令使內核配置立馬生效:

  /sbin/sysctl -p

  五、調整Linux的最大文件打開數

  Linux最大文件打開數的默認值很低,必須修改的高一些,否則squid伺服器在高負載時執行性能將很低。

  vim /etc/security/limit.conf ,在最後一行添加

  * soft nofile 60000 * hard nofile 65535

  值得注意的是,通過命令ulimit -SHn是改變不了linux系統的最大文件打開數的,寫進/etc/rc.d/rc.local也是不行的。

  六、只開啟必須的服務

  只開啟必須的服務,其它均可關閉。以下列出的服務可開啟:

  crond irqbalance microcode_ctl network random sshd syslog

  iptables這個待定。如果前端有硬體防火牆;這個也可以關閉,反之不行。

  下面的命令可檢查運行在5級別的服務,3級以此類推

  chkconfig -- list | awk '{print $1 " " $7}' | grep 5:on

  檢查下列印服務,此服務經常成漏網之魚,關掉它。

  service cups stop chkconfig cups off

  chkconfig這條命令會關掉3和5級別的服務。

  七、停止ipv6

  線上跑的Linux伺服器,絕大多數是64位的CentOS。CentOS默認的狀態下,ipv6是被啟用的狀態。因為我們不使用ipv6,所以,停止ipv6能夠以最大限度保證安全和快速。

  vim /etc/modprobe.conf

  修改此配置文件,添加如下行到文尾:

  alias net-pf-10 off alias ipv6 off echo "IPV6INIT=no" >> /etc/sysconfig/network-scripts/ifcfg-eth0

  八、開啟RHEL的網卡激活模式

  如果伺服器的系統是RHEL,就需要開啟RHEL默認的網卡激活模式為ONBOOT。感覺這也算是RHEL的一個小bug吧:筆者替客戶維護的某臺RHEL應用伺服器,居然六塊網卡,在ONBOOT關閉的時候,有的啟動,有的不啟動,汗噢。我還特的向客戶諮詢了這個問題,客戶答曰:買多了……

  vim /etc/sysconfig/network-scripts/ifcfg-eth0,eth1

  eth1為第二網卡,其它依此內推。

  ONBOOT=YES

  然後重啟網絡服務生效

  service network restart

  九、Linux內存管理

  Linux內存管理模式跟windows不一樣,它的原則是有多少就用多少。很多Linux新手喜歡用命令free -m觀察,發現free所剩無餘後想辦法去優化內存;其實就走進了一個誤區,linux本身的內存模式就很好了,為了提高磁碟存取效率,Linux做了一些精心的設計,除了對dentry進行緩存(用於VFS,加速文件路徑名到inode的轉換),還採取了兩種主要Cache方式:Buffer Cache和Page Cache。前者針對磁碟塊的讀寫,後者針對文件inode的讀寫。這些Cache有效縮短了 I/O系統調用(比如read,write,getdents)的時間。所以,建議,內存管理這塊順其自然吧。

相關焦點

  • linux下SCP指令的使用
    SCP常用實例(在linux的centos環境下為例,從192.168.200.10現在一個文件到本地)1、從遠程伺服器下載文件到本地伺服器。scp 用戶名@IP位址:/home/1.txt ./2、linux下,通過指定埠從遠程伺服器下載文件到本地。scp -oPort=埠號 用戶名@IP位址:/opt/ftp-0.17-54.el6.x86_64.rpm ./3、linux下,通過指定埠將本地文件,上傳到遠程伺服器指定目錄下。
  • linux下ntp時鐘同步的搭建和使用(超詳細)
    在生產和學習過程中,是一個最容易被忽略卻又很重要的協議。一、安裝NTP1、linux下NTP的安裝方式有很多種,yum、wget、rpm都可以,選擇自己習慣的方式即可,這裡不再贅述!本人習慣用rpm方式安裝,在伺服器上就需要安裝如下兩個文件。
  • phpstudy linux 面板web後門防護功能上線
    phpstudy linux 面板針對伺服器和網站做了全面的安全防護措施,儘可能地防範網站被入侵,留置後門風險,本篇文章著重介紹phpstudy linux 面板其中的一項安全功能【網站防火牆】之【GET(args)參數檢查】,將木馬風險文件阻止在Nginx或者Apache伺服器之外,確保網站運行安全
  • 嵌入式Web伺服器技術及其在電力系統中的應用綜述
    在傳統的Web應用中,Web伺服器往往與資料庫系統或者文件系統並存在一臺高性能的計算機系統中,資料庫伺服器是Web伺服器的信息來源,Web伺服器則是系統的信息發布中心,它接收來自瀏覽器的請求,並根據請求生成新的頁面發送給Web瀏覽器,完成信息在網絡範圍內的傳輸。Web伺服器檢索的信息來自資料庫系統,實時性要求不高,可以滿足常規的查詢和檢索系統的要求。
  • 升級Ubuntu Linux 內核的幾種不同方法
    然後下載符合以下格式的兩個文件(其中 X.Y.Z 是最高版本號):1. linux-image-X.Y.Z-generic-*.deb2. linux-modules-X.Y.Z-generic-.deb在終端中改變到文件所在的目錄,然後執行此命令手動安裝內核:$ sudo dpkg --install *.deb重啟系統,使用新內核
  • Linux下如何掛載新磁碟:mount
    前言在linux系統伺服器上插了一個U盤,結果系統顯示不出來,是什麼原因導致了系統不能識別U盤呢?經過一番搜索,發現新的硬體設備插在linux系統上時,如果不能正常顯示,則需要通過掛載讓U盤顯示出來,這裡就用到了我們今天要介紹的命令:mount。
  • 2016年十大Linux伺服器發行版排行榜
    【51CTO.com快譯】Linux是熱門的數據中心伺服器系統,能夠為使用者節省許可和維護成本。但是這仍存有問題:對於作為伺服器作業系統的Linux而言,什麼才是你的*** 選擇。十大Linux伺服器發行版Linux伺服器發行版要躋身本榜單,需要在下列特點方面很出色:安裝和使用的簡易性、成本、可用的商業支持和數據中心可靠性。
  • Linux下scp命令使用教程
    然後我們介紹第一條命令將本地的目錄上傳的遠程伺服器目錄上。執行命令"scp  -r /opt/test root@192.168.2.105:/opt"。本條命令意思為將本地的目錄/opt/test上傳到遠程192.168.2.105的opt目錄下。然後根據提示輸入root的密碼,等待即可上傳完畢。接下來我們登錄遠程伺服器進行查看驗證,可以看到目錄內的文件已經全部拷貝過來。
  • 嵌入式Web伺服器GoAhead在電力系統通信中應用
    嵌入式Web伺服器作為工業乙太網交換機的控制管理核心,具有重大的研究意義和應用前景,它為管理、控制和監測設備提供了一個很好的途徑。常見的WebServer有:GoAhead,Boa,Lighttpd,Shttpd,Th ttpd,Mathopd,Minihttpd,Appweb。本軟體系統採用GoAhead作為工業乙太網交換機的嵌入式Web伺服器。
  • 嵌入式WEB伺服器中TCP/IP協議棧的設計與實現
    而嵌入式Web伺服器將Web伺服器引入到現場測試和控制設備中,在相應的硬體平臺和軟體系統的支持下,使傳統的測試和控制設備轉變為具備了以TCP/IP為底層通信協議,Web技術為核心的基於網際網路的網絡測試和控制設備,有著一般Web伺服器所不具有優勢。本文就嵌入式Web伺服器在通信協議的選擇方面做了具體的研究。
  • Linux提權的幾種常用方式
    1.3 Linux提權輔助工具github項目地址:https://github.com/mzet-/linux-exploit-suggester.git (1)根據作業系統版本號自動查找相應提權腳本wget https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh -O les.sh
  • 創新優化高性能 IBM伺服器X3650M4報2W2
    【05月28日太平洋電腦網成都站】IBM X3650M4(7915R41)是一款針對性能和可靠性而優化的創新設計的伺服器,針對業務關鍵型工作負載(包括雲計算、虛擬桌面和業務分析)將超凡的正常運行時間和高性能融為一體,易於部署、集成
  • 免費GTAV效應明顯 Epic官方表示已優化伺服器
    由於本周的免費遊戲過於特殊,也直接擠爆了Epic Game Store伺服器。隨後,Epic也發布公告稱解決了伺服器問題。免費GTAV效應明顯 Epic官方表示已優化伺服器  Epic在官方微博上表示,他們已經對伺服器進行了優化大多數玩家應該可以登陸並領取遊戲了
  • 《我的世界》伺服器製作方法 伺服器怎麼做
    這裡給大家帶來玩家開服遇到的問題以及經驗與大家分享,希望對新開的伺服器有所幫助。 ... 我的世界伺服器建立並不難,只要運行伺服器端軟體就可以,但是如何能讓一臺伺服器長期運行下去就是一件很有挑戰性的事情了。這裡給大家帶來玩家開服遇到的問題以及經驗與大家分享,希望對新開的伺服器有所幫助。
  • 我的世界:請求網易好好優化伺服器
    雖然開墾了,可是寶石每天也能領也還合理以下的話,純噴,老子TM聯機玩5分鐘,你TM卡得像個屎,華為nove4剛買半年,進去都要一分鐘,我去上個廁所TM要重開,你特麼優化像個屎一樣,,老子實在忍不了,我開熱點跟朋友玩都卡,還有能不能管管評論區的小學生,TM都幾歲,天天在那發什麼不轉發小學生。花雨庭伺服器掛逼飛你臉上,能不能搞好點優化,還不如以前盜版玩的爽,下個多玩都能玩起飛。
  • 我的世界伺服器如何建立?Minecraft伺服器教程
    本文給大家帶來Minecraft伺服器架設教程,讓大家對我的世界伺服器建立有一個不錯的認識,從怎麼建立,到怎麼維護做一個系統的歸納,大家遊戲愉快!   我的世界伺服器建立並不難,只要運行伺服器端軟體就可以,但是如何能讓一臺伺服器長期運行下去就是一件很有挑戰性的事情了。這裡給大家帶來玩家開服遇到的問題以及經驗與大家分享,希望對新開的伺服器有所幫助。 巴士單機遊戲
  • 國產開源web伺服器kangle 2.4.2 發布
    kangle web伺服器是一款集成asp/asp.net(windows版)的易操作管理的國產開源的高性能web伺服器和反向代理伺服器軟體。
  • Linux下文件(文件夾)的壓縮和解壓
    前言在linux下,當我們上傳一個較大的文件或者要安裝一個軟體(如tomcat、mysql等)時,我們需要先將官網下載的壓縮包在linux伺服器上進行解壓,再進行安裝。
  • Linux如何安裝軟體
    常見的有以下幾種安裝方法源碼安裝rpm包安裝yum安裝 (RedHat、CentOS)apt-get安裝 (debian,ubuntu)源碼安裝以安裝gcc為例,登陸https://gcc.gnu.org/,下載自己想要的版本的gcc安裝包上傳gcc-4.1.2.tar.gz到Linux伺服器任意目錄,解壓解壓目錄執行shell命令configuration解壓目錄執行
  • 你未必知道 十大伺服器虛擬化優化竅門
    以下的十大虛擬機優化小竅門能幫助用戶輕鬆解決每個難題。本文列出的十個小技巧能提高效率,減少意料之外的宕機並讓你的虛擬化努力物有所值。1.對硬體更新換代雖然在你的虛擬基礎架構上使用***的硬體系統能明顯優化性能,但升級硬體主要指的是對防火牆和BIOS的升級。跟蹤這兩個領域的關鍵升級並保證定期對硬體進行補丁維護。