1. 伺服器出現鏈結建立不上的情況,檢視dmesg,發現伺服器出現大量 file-max limit 65536 reached 錯誤。
初步判斷是伺服器核心配置問題,核心的file-max設定為65536,表示系統最多開啟檔案描述符為65536,遠遠達不到壓測標準。
通過 cat /proc/sys/fs/file-max 檢視,結果發現 file-max為655360,與預期的結果不符
然後檢視 sysctl -p| grep file-max,結果發現出現了兩個值
檢視配置檔案 /etc/sysctl.conf
發現配置了兩個
直接刪除乙個就ok了
file-max配置太小
修改方法:
sysctl -w fs.file-max = 655360
[參考文章]
2。建立2w+個長鏈結之後, 就不能繼續建立了。發現是埠使用完畢
在配置檔案 /etc/sysctl.conf中新增配置,然後sysctl -p通知核心生效配置
file-max配置太小
修改方法:
sysctl -w fs.file-max = 655360
[參考文章]
編譯鏈結過程
在談編譯鏈結過程之前我們需要了解一下虛擬位址空間以及程式在編譯鏈結過程時經過了什麼步驟。虛擬位址空間之前在程序空間的部落格中詳細介紹過了,詳見 上圖就是32位系統中4g虛擬位址空間的分布情況 text 段 指令段,存放的是指令 在程式中,我們把區域性變數定義 區域性變數的 定義是指令而不是資料 還有...
動態鏈結過程
最近學習了elf檔案的格式,重點關注了動態鏈結過程中的使用到的section 第一步程式在載入時,會把直譯器程式加入到.interp段。可以解決動態庫和可執行檔案的載入。一般來講程式的載入方式是懶啟動,lazy 除非指定了ld bind now環境變數非0,那麼在程式啟動時就會把外部符號位址全部載入...
編譯鏈結過程(一)
什麼是編譯?什麼是鏈結?為什麼需要編譯和鏈結?在很久以前,計算機發展的初期,還在用機器語言編寫程式,量比較少時是不需要編譯和鏈結的。因為當時的程式設計師直接編寫機器碼讓計算機執行。每種cpu的指令是不相同的,所以每乙個程式要換一台不同cpu的機器上執行時,需要重新寫程式,而且機器語言 涉及很多計算機...