新聞中心
深度剖析:Linux 系統(tǒng)的性能優(yōu)化

在禹州等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供做網(wǎng)站、網(wǎng)站設(shè)計(jì) 網(wǎng)站設(shè)計(jì)制作按需設(shè)計(jì)網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),成都營(yíng)銷網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站制作,禹州網(wǎng)站建設(shè)費(fèi)用合理。
Linux 是一款開源的操作系統(tǒng),自 1991 年誕生以來(lái),越來(lái)越多的人開始使用它。然而,隨著應(yīng)用程序和數(shù)據(jù)量的增加,性能問(wèn)題也會(huì)出現(xiàn)。為了解決這些問(wèn)題,需要進(jìn)行 Linux 系統(tǒng)的性能優(yōu)化。
本文將深入探討 Linux 系統(tǒng)的性能優(yōu)化,從以下幾個(gè)方面進(jìn)行講解:
一、內(nèi)存優(yōu)化
內(nèi)存是 Linux 系統(tǒng)中一個(gè)很重要的組成部分。如果系統(tǒng)中的內(nèi)存過(guò)低,就會(huì)引發(fā)許多性能問(wèn)題。為了優(yōu)化內(nèi)存,我們需要了解如何使用 Swap 分區(qū)、使用虛擬內(nèi)存、清理內(nèi)存等一些必要的操作。
1. 使用 Swap 分區(qū)來(lái)增加可用內(nèi)存
Swap 分區(qū)是一塊獨(dú)立的硬盤空間,可以被內(nèi)存管理器用作虛擬內(nèi)存。當(dāng)系統(tǒng)運(yùn)行時(shí),如果可用內(nèi)存不足,系統(tǒng)會(huì)將一部分內(nèi)存轉(zhuǎn)移到 Swap 分區(qū)中,從而釋放出內(nèi)存。
要配置 Swap 分區(qū),我們需要按照以下步驟操作:
– 創(chuàng)建 Swap 文件:使用 dd 命令創(chuàng)建一個(gè)指定大小的 Swap 文件。
– 格式化 Swap 文件:使用 mkswap 命令格式化 Swap 文件。
– 啟用 Swap 文件:使用 swapon 命令啟用 Swap 文件。
2. 使用虛擬內(nèi)存
虛擬內(nèi)存是一種計(jì)算機(jī)系統(tǒng)內(nèi)存管理技術(shù),可以將硬盤空間作為虛擬內(nèi)存緩存。當(dāng)系統(tǒng)請(qǐng)求訪問(wèn)某個(gè)虛擬內(nèi)存地址時(shí),虛擬內(nèi)存緩存會(huì)將該地址所對(duì)應(yīng)的頁(yè)從硬盤中讀取到內(nèi)存中。
為了使用虛擬內(nèi)存,我們需要在系統(tǒng)中進(jìn)行配置。具體操作方式如下:
– 打開 /etc/fstab 文件,并添加一行類似于下面的代碼:tmpfs /dev/shm tmpfs defaults 0 0
– 重啟系統(tǒng)并使用 free 命令查看虛擬內(nèi)存是否已經(jīng)啟用。
3. 清理內(nèi)存
內(nèi)存的使用情況會(huì)隨著時(shí)間的推移而發(fā)生變化。有些應(yīng)用程序可能會(huì)繼續(xù)使用內(nèi)存即使它們已經(jīng)被關(guān)閉了。因此,必須定期清理內(nèi)存來(lái)確保系統(tǒng)性能的穩(wěn)定。
要清理內(nèi)存,我們可以使用以下命令:
– free -m:顯示內(nèi)存的使用情況。
– sync && echo 3 | tee /proc/sys/vm/drop_caches:清理緩存。
二、文件系統(tǒng)優(yōu)化
文件系統(tǒng)也是 Linux 系統(tǒng)中的重要組成部分。為了避免文件系統(tǒng)中的性能問(wèn)題,我們需要對(duì)其進(jìn)行優(yōu)化。
1. 調(diào)整讀寫緩存
Linux 系統(tǒng)默認(rèn)使用回寫緩存機(jī)制,這可能會(huì)導(dǎo)致數(shù)據(jù)丟失的問(wèn)題。因此,我們可以使用回讀緩存機(jī)制來(lái)避免此問(wèn)題。
要調(diào)整讀寫緩存,我們可以使用以下命令:
– echo 150000 > /proc/sys/vm/dirty_bytes:設(shè)置回讀緩存大小。
– echo 10 > /proc/sys/vm/dirty_ratio:設(shè)置臟數(shù)據(jù)占內(nèi)存的百分比。
2. 壓縮文件系統(tǒng)
壓縮文件系統(tǒng)可以減小磁盤空間,并提高文件系統(tǒng)的性能。Linux 系統(tǒng)中有多種文件壓縮格式可供選擇,如 Gzip、Bzip2 和 Xz。
要壓縮文件系統(tǒng),我們可以使用以下命令:
– tar -czvf backup.tar.gz /home:創(chuàng)建文件系統(tǒng)的壓縮備份。
– tar -xzvf backup.tar.gz:將備份解壓縮。
三、網(wǎng)絡(luò)優(yōu)化
網(wǎng)絡(luò)是 Linux 系統(tǒng)中另一個(gè)重要的組成部分。為了解決網(wǎng)絡(luò)性能問(wèn)題,我們需要進(jìn)行網(wǎng)絡(luò)優(yōu)化。
1. 增加服務(wù)器并發(fā)數(shù)
Linux 系統(tǒng)的默認(rèn)配置可能會(huì)限制服務(wù)器的并發(fā)數(shù)。為了增加服務(wù)器的并發(fā)數(shù),我們可以使用以下命令:
– ulimit -n 65535:設(shè)置文件描述符的更大值。
– /etc/security/limits.conf:在文件的 bottom 處添加以下配置:* soft nofile 65535 * hard nofile 65535。
2. 調(diào)整 TCP 緩沖區(qū)大小
Linux 系統(tǒng)中的 TCP 緩沖區(qū)將數(shù)據(jù)存儲(chǔ)在內(nèi)存中,然后將其發(fā)送到網(wǎng)絡(luò)。我們可以調(diào)整 TCP 緩沖區(qū)大小來(lái)提高網(wǎng)絡(luò)性能。
要調(diào)整 TCP 緩沖區(qū)大小,我們可以使用以下命令:
– sysctl -w net.core.rmem_max=67108864:設(shè)置 TCP 接收緩沖區(qū)大小。
– sysctl -w net.ipv4.tcp_rmem=’4096 87380 67108864’:設(shè)置 TCP 接收緩沖區(qū)大小。
– sysctl -w net.ipv4.tcp_wmem=’4096 16384 67108864’:設(shè)置 TCP 發(fā)送緩沖區(qū)大小。
四、應(yīng)用程序優(yōu)化
應(yīng)用程序也是 Linux 系統(tǒng)中的一部分。為了提高系統(tǒng)性能,我們需要優(yōu)化應(yīng)用程序。
1. 去除無(wú)用的應(yīng)用程序
在安裝 Linux 系統(tǒng)時(shí),往往會(huì)包含許多無(wú)用的應(yīng)用程序。要去除這些無(wú)用的應(yīng)用程序,我們可以使用以下命令:
– sudo apt-get remove [應(yīng)用程序名]: 刪除單個(gè)應(yīng)用程序。
– sudo apt-get autoremove: 刪除所有的無(wú)用應(yīng)用程序。
2. 優(yōu)化應(yīng)用程序配置
應(yīng)用程序的配置對(duì)性能也有很大的影響。我們可以通過(guò)以下修改應(yīng)用程序的配置文件來(lái)優(yōu)化性能:
– 修改數(shù)據(jù)庫(kù)的緩存和查詢緩存。
– 提高 Apache 或 Nginx 的并發(fā)連接數(shù)。
– 調(diào)整 PHP-FPM 和 HHVM 的工作進(jìn)程數(shù)量。
通過(guò)在 Linux 系統(tǒng)中進(jìn)行內(nèi)存優(yōu)化、文件系統(tǒng)優(yōu)化、網(wǎng)絡(luò)優(yōu)化和應(yīng)用程序優(yōu)化,我們可以顯著提高系統(tǒng)的性能。這些優(yōu)化技術(shù)不僅可以讓系統(tǒng)更加穩(wěn)定,還可以提高系統(tǒng)的響應(yīng)速度和效率。希望本文可以幫助您更好地了解 Linux 系統(tǒng)的性能優(yōu)化。
相關(guān)問(wèn)題拓展閱讀:
- linux高負(fù)載下徹底優(yōu)化mysql數(shù)據(jù)庫(kù)
linux高負(fù)載下徹底優(yōu)化mysql數(shù)據(jù)庫(kù)
友情提示:同時(shí)在線訪問(wèn)量繼續(xù)增大 對(duì)于1G內(nèi)存的服務(wù)器明顯感覺(jué)到吃力嚴(yán)重時(shí)甚至每天都會(huì)死機(jī) 或灶困者時(shí)不時(shí)的服務(wù)器卡一下 這個(gè)問(wèn)題曾經(jīng)困擾了我半個(gè)多月MySQL使用是很具伸縮性的算法,因此你通常能用很少的內(nèi)存運(yùn)行或給MySQL更多的被存以得到更好的性能。
同時(shí)在線訪問(wèn)量繼續(xù)增大 對(duì)于1G內(nèi)存的服務(wù)器明顯感覺(jué)到吃力嚴(yán)重時(shí)甚至每天都會(huì)死機(jī) 或者時(shí)不時(shí)的服務(wù)器卡一下 這個(gè)問(wèn)題曾經(jīng)困擾了我半個(gè)多月MySQL使用是很具伸縮性的算法,因此你通常能用很少的內(nèi)存運(yùn)行或給MySQL更多的被存以得到更好的性能。
安裝好mysql后,配制文件應(yīng)該在/usr/local/mysql/share/mysql目錄中,配制文件有幾個(gè),有my-huge.cnf my-medium.cnf my-large.cnf my-all.cnf,不同的流量的網(wǎng)站和不同配制的服務(wù)器環(huán)境,當(dāng)然需要有不同的配制文件了。
一般的情況下,my-medium.cnf這個(gè)配制文件就能滿足我們的大多需要;一般我們會(huì)把配置文件拷貝到/etc/my.cnf 只需要修改這個(gè)配置文件就可以了,使用mysqladmin variables extended-status _u root _p 可以看到目前的參數(shù),有3個(gè)配置參數(shù)是最重要的,即key_buffer_size,query_cache_size,table_cache。
key_buffer_size只對(duì)MyISAM表起作用,key_buffer_size指定索引緩沖區(qū)的大小,它決定索引處理的速度,尤其是索引讀的速度。一般我們?cè)O(shè)為16M,實(shí)際上稍微大一點(diǎn)的站點(diǎn) 這個(gè)數(shù)字是遠(yuǎn)遠(yuǎn)不夠的,通過(guò)檢查狀態(tài)值Key_read_requests和Key_reads,可以知道key_buffer_size設(shè)置是否合理。比例key_reads / key_read_requests應(yīng)該盡可能的低,至少是1:100,1:1000更好(上述狀態(tài)值可以使用SHOW STATUS LIKE ‘key_read%’獲得)。 或者如果你裝了phpmyadmin 可以通過(guò)服務(wù)器運(yùn)行狀態(tài)看陸鉛到,筆者推薦用phpmyadmin管理mysql,以下的狀態(tài)值都是本人通過(guò)phpmyadmin獲得的實(shí)例分析:
這個(gè)服務(wù)器已經(jīng)運(yùn)行了20天
key_buffer_size _ 128M
key_read_requests _
key_reads
比例接近1:8000 健康狀況非常好
另外一個(gè)估計(jì)key_buffer_size的辦法 把你網(wǎng)站數(shù)據(jù)庫(kù)的每個(gè)表的索引所占空間大小加起來(lái)看看以此服務(wù)器為例:比較大的幾個(gè)表索引加起來(lái)大概125M 這個(gè)數(shù)字會(huì)隨著表變大而變大。
從4.0.1開始,MySQL提供了查詢緩沖機(jī)制。使用查詢緩沖,MySQL將SELECT語(yǔ)句和查詢結(jié)果存放在緩沖區(qū)中,今后對(duì)于同樣的SELECT語(yǔ)句(區(qū)分大小寫)隱悉念,將直接從緩沖區(qū)中讀取結(jié)果。根據(jù)MySQL用戶手冊(cè),使用查詢緩沖最多可以達(dá)到238%的效率。
通過(guò)調(diào)節(jié)以下幾個(gè)參數(shù)可以知道query_cache_size設(shè)置得是否合理
Qcache inserts
Qcache hits
Qcache lowmem prunes
Qcache free blocks
Qcache total blocks
Qcache_lowmem_prunes的值非常大,則表明經(jīng)常出現(xiàn)緩沖不夠的情況,同時(shí)Qcache_hits的值非常大,則表明查詢緩沖使用非常頻繁,此時(shí)需要增加緩沖大小Qcache_hits的值不大,則表明你的查詢重復(fù)率很低,這種情況下使用查詢緩沖反而會(huì)影響效率,那么可以考慮不用查詢緩沖。此外,在SELECT語(yǔ)句中加入SQL_NO_CACHE可以明確表示不使用查詢緩沖。
Qcache_free_blocks,如果該值非常大,則表明緩沖區(qū)中碎片很多query_cache_type指定是否使用查詢緩沖
我設(shè)置:
query_cache_size = 32M
query_cache_type= 1
得到如下?tīng)顟B(tài)值:
Qcache queries in cache表明目前緩存的條數(shù)
Qcache inserts
Qcache hits
看來(lái)重復(fù)查詢率還挺高的
Qcache lowmem prunes有這么多次出現(xiàn)緩存過(guò)低的情況
Qcache not cached
Qcache free memory
目前剩余緩存空間
Qcache free blocks 5328 這個(gè)數(shù)字似乎有點(diǎn)大 碎片不少
Qcache total blocks 30953
如果內(nèi)存允許32M應(yīng)該要往上加點(diǎn)
table_cache指定表高速緩存的大小。每當(dāng)MySQL訪問(wèn)一個(gè)表時(shí),如果在表緩沖區(qū)中還有空間,該表就被打開并放入其中,這樣可以更快地訪問(wèn)表內(nèi)容。通過(guò)檢查峰值時(shí)間的狀態(tài)值Open_tables和Opened_tables,可以決定是否需要增加table_cache的值。如果你發(fā)現(xiàn)open_tables等于table_cache,并且opened_tables在不斷增長(zhǎng),那么你就需要增加table_cache的值了(上述狀態(tài)值可以使用SHOW STATUS LIKE ‘Open%tables’獲得)。注意,不能盲目地把table_cache設(shè)置成很大的值。如果設(shè)置得太高,可能會(huì)造成文件描述符不足,從而造成性能不穩(wěn)定或者連接失敗。
對(duì)于有1G內(nèi)存的機(jī)器,推薦值是128-256。
筆者設(shè)置
table_cache = 256
得到以下?tīng)顟B(tài):
Open tables 256
Opened tables 9046
雖然open_tables已經(jīng)等于table_cache,但是相對(duì)于服務(wù)器運(yùn)行時(shí)間來(lái)說(shuō),已經(jīng)運(yùn)行了20天,opened_tables的值也非常低。因此,增加table_cache的值應(yīng)該用處不大。如果運(yùn)行了6個(gè)小時(shí)就出現(xiàn)上述值 那就要考慮增大table_cache。
如果你不需要記錄2進(jìn)制log 就把這個(gè)功能關(guān)掉,注意關(guān)掉以后就不能恢復(fù)出問(wèn)題前的數(shù)據(jù)了,需要您手動(dòng)備份,二進(jìn)制日志包含所有更新數(shù)據(jù)的語(yǔ)句,其目的是在恢復(fù)數(shù)據(jù)庫(kù)時(shí)用它來(lái)把數(shù)據(jù)盡可能恢復(fù)到最后的狀態(tài)。另外,如果做同步復(fù)制( Replication )的話,也需要使用二進(jìn)制日志傳送修改情況。
log_bin指定日志文件,如果不提供文件名,MySQL將自己產(chǎn)生缺省文件名。MySQL會(huì)在文件名后面自動(dòng)添加數(shù)字引,每次啟動(dòng)服務(wù)時(shí),都會(huì)重新生成一個(gè)新的二進(jìn)制文件。此外,使用log-bin-index可以指定索引文件;使用binlog-do-db可以指定記錄的數(shù)據(jù)庫(kù);使用binlog-ignore-db可以指定不記錄的數(shù)據(jù)庫(kù)。注意的是:binlog-do-db和binlog-ignore-db一次只指定一個(gè)數(shù)據(jù)庫(kù),指定多個(gè)數(shù)據(jù)庫(kù)需要多個(gè)語(yǔ)句。而且,MySQL會(huì)將所有的數(shù)據(jù)庫(kù)名稱改成小寫,在指定數(shù)據(jù)庫(kù)時(shí)必須全部使用小寫名字,否則不會(huì)起作用。
關(guān)掉這個(gè)功能只需要在他前面加上#號(hào)
#log-bin
開啟慢查詢?nèi)罩? slow query log )
慢查詢?nèi)罩緦?duì)于跟蹤有問(wèn)題的查詢非常有用。它記錄所有查過(guò)long_query_time的查詢,如果需要,還可以記錄不使用索引的記錄。下面是一個(gè)慢查詢?nèi)罩镜睦樱?/p>
開啟慢查詢?nèi)罩?,需要設(shè)置參數(shù)log_slow_queries、long_query_times、log-queries-not-using-indexes。
log_slow_queries指定日志文件,如果不提供文件名,MySQL將自己產(chǎn)生缺省文件名。long_query_times指定慢查詢的閾值,缺省是10秒。log-queries-not-using-indexes是4.1.0以后引入的參數(shù),它指示記錄不使用索引的查詢。筆者設(shè)置long_query_time=10
筆者設(shè)置:
sort_buffer_size = 1M
max_connections=120
wait_timeout =120
back_log=100
read_buffer_size = 1M
thread_cache=32
interactive_timeout=120
thread_concurrency = 4
參數(shù)說(shuō)明:
back_log
要求MySQL能有的連接數(shù)量。當(dāng)主要MySQL線程在一個(gè)很短時(shí)間內(nèi)得到非常多的連接請(qǐng)求,這就起作用,然后主線程花些時(shí)間(盡管很短)檢查連接并且啟動(dòng)一個(gè)新線程。back_log值指出在MySQL暫時(shí)停止回答新請(qǐng)求之前的短時(shí)間內(nèi)多少個(gè)請(qǐng)求可以被存在堆棧中。只有如果期望在一個(gè)短時(shí)間內(nèi)有很多連接,你需要增加它,換句話說(shuō),這值對(duì)到來(lái)的TCP/IP連接的偵聽(tīng)隊(duì)列的大小。你的操作系統(tǒng)在這個(gè)隊(duì)列大小上有它自己的限制。 Unix listen(2)系統(tǒng)調(diào)用的手冊(cè)頁(yè)應(yīng)該有更多的細(xì)節(jié)。檢查你的OS文檔找出這個(gè)變量的更大值。試圖設(shè)定back_log高于你的操作系統(tǒng)的限制將是無(wú)效的。
max_connections
并發(fā)連接數(shù)目更大,120 超過(guò)這個(gè)值就會(huì)自動(dòng)恢復(fù),出了問(wèn)題能自動(dòng)解決
thread_cache
沒(méi)找到具體說(shuō)明,不過(guò)設(shè)置為32后 20天才創(chuàng)建了400多個(gè)線程 而以前一天就創(chuàng)建了上千個(gè)線程 所以還是有用的
thread_concurrency
#設(shè)置為你的cpu數(shù)目x2,例如,只有一個(gè)cpu,那么thread_concurrency=2
#有2個(gè)cpu,那么thread_concurrency=4
skip-innodb
#去掉innodb支持
linux性能優(yōu)化的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于linux性能優(yōu)化,深度剖析: linux系統(tǒng)的性能優(yōu)化,linux高負(fù)載下徹底優(yōu)化mysql數(shù)據(jù)庫(kù)的信息別忘了在本站進(jìn)行查找喔。
成都網(wǎng)站設(shè)計(jì)制作選創(chuàng)新互聯(lián),專業(yè)網(wǎng)站建設(shè)公司。
成都創(chuàng)新互聯(lián)10余年專注成都高端網(wǎng)站建設(shè)定制開發(fā)服務(wù),為客戶提供專業(yè)的成都網(wǎng)站制作,成都網(wǎng)頁(yè)設(shè)計(jì),成都網(wǎng)站設(shè)計(jì)服務(wù);成都創(chuàng)新互聯(lián)服務(wù)內(nèi)容包含成都網(wǎng)站建設(shè),小程序開發(fā),營(yíng)銷網(wǎng)站建設(shè),網(wǎng)站改版,服務(wù)器托管租用等互聯(lián)網(wǎng)服務(wù)。
分享文章:深度剖析: linux系統(tǒng)的性能優(yōu)化 (linux性能優(yōu)化)
轉(zhuǎn)載來(lái)源:http://www.5511xx.com/article/cdpjoeh.html


咨詢
建站咨詢
