第一步,創建性能監視器對象:
創新互聯建站主要從事做網站、成都網站建設、網頁設計、企業做網站、公司建網站等業務。立足成都服務榆陽,10年網站建設經驗,價格優惠、服務專業,歡迎來電咨詢建站服務:13518219792
PerformanceCounter _oPerformanceCounter=new PerformanceCounter("Processor","% Processor Time","_Total");
第二步,獲取CPU使用情況:
float _nVal=_oPerformanceCounter.NextValue();
_nVal中就是當前CPU的使用率了,加上百分號(%)就是使用率的百分比,比如:
string _s="當前CPU使用率:" + nVal.ToString("0.0") + "%";
Process [] pro;
pro = Process.GetProcesses();
int total=0;
Process temp;
int i;
for(i=0;ipro.Length ;i++)
{
temp =pro[i];
total=temp.PrivateMemorySize +total ;
}
獲得內存的占用大小
復雜的組合。golang短連接導致cpu高,使用golang進行復雜的組合運算,導致CPU占用率非常高。CPU指中央處理器,中央處理器作為計算機系統的運算和控制核心,是信息處理、程序運行的最終執行單元。
Go語言由Google公司開發,并于2009年開源,相比Java/Python/C等語言,Go尤其擅長并發編程,性能堪比C語言,開發效率肩比Python,被譽為“21世紀的C語言”。
Go語言在云計算、大數據、微服務、高并發領域應用應用非常廣泛。BAT大廠正在把Go作為新項目開發的首選語言。
Go語言能干什么?
1、服務端開發:以前你使用C或者C++做的那些事情,用Go來做很合適,例如日志處理、文件系統、監控系統等;
2、DevOps:運維生態中的Docker、K8s、prometheus、grafana、open-falcon等都是使用Go語言開發;
3、網絡編程:大量優秀的Web框架如Echo、Gin、Iris、beego等,而且Go內置的 net/http包十分的優秀;
4、Paas云平臺領域:Kubernetes和Docker Swarm等;
5、分布式存儲領域:etcd、Groupcache、TiDB、Cockroachdb、Influxdb等;
6、區塊鏈領域:區塊鏈里面有兩個明星項目以太坊和fabric都使用Go語言;
7、容器虛擬化:大名鼎鼎的Docker就是使用Go語言實現的;
8、爬蟲及大數據:Go語言天生支持并發,所以十分適合編寫分布式爬蟲及大數據處理。
1. 部署簡單
Go
編譯生成的是一個靜態可執行文件,除了glibc外沒有其他外部依賴。這讓部署變得異常方便:目標機器上只需要一個基礎的系統和必要的管理、監控工具,完全不需要操心應用所需的各種包、庫的依賴關系,大大減輕了維護的負擔。
2. 并發性好
Goroutine和channel使得編寫高并發的服務端軟件變得相當容易,很多情況下完全不需要考慮鎖機制以及由此帶來的各種問題。單個Go應用也能有效的利用多個CPU核,并行執行的性能好。
3. 良好的語言設計
從學術的角度講Go語言其實非常平庸,不支持許多高級的語言特性;但從工程的角度講,Go的設計是非常優秀的:規范足夠簡單靈活,有其他語言基礎的程序員都能迅速上手。更重要的是
Go 自帶完善的工具鏈,大大提高了團隊協作的一致性。
4. 執行性能好
雖然不如 C 和 Java,但相比于其他編程語言,其執行性能還是很好的,適合編寫一些瓶頸業務,內存占用也非常省。
參照的是 這個文章
首先自己寫一段demo
里面負責2件事
doSomeThingOne
genSomeBytes
運行這個程序go run main.go
To install thewrk,you need only:
git clone
cd wrk
make
wrk relies on the openssl and luajit, learn more from its github page
Generating requests
Our demo is listening on the port 9876 ,so let's generate some requests for that.
./wrk -c400 -t8 -d5m
-c400means we have 400 connections to keep open
-t8means we use 8 threads to build requests
-d5mmeans the duration of the test will last for 5 minutes
用這段命令來壓服務器
Our server is very busy now and we can see some information via browser. Inputlocalhost:9876/debug/pprofyou will see:
然后用命令進入
在這里能看見各種方法的運行時間
所以我們安裝Graphviz 在mac下
brew install graphviz
之后再這個(pprof)里面輸入web
會生產一個svg文件
用瀏覽器打開我們就會看到
很顯然gensomebytes里面的math方法最消耗時間。這個就是我們優化的對象
其實也很方便在
localhost:9876/debug/pprof/profile改成
localhost:9876/debug/pprof/heap
后面的結果一樣。。和cpu一樣可以看到那個heap占用了大量的內存到時候優化吧
這個文章里面的第一個方法就可以做測試內存占用的.
有空試試把
分布式程序 A B C D 4個進程在服務器. 監控程序E 打包程序F
寫一個監控程序定時監控這4個進程的CPU 內存(搞成配置文件)
達到性能瓶頸(例如 90%CPU 內存剩下10%)? E用shell觸發打包程序F把pprof等信息打包.并發送郵件
給配置者.
分享文章:go語言監控cpu go 監控
文章起源:http://vcdvsql.cn/article20/dosdejo.html
成都網站建設公司_創新互聯,為您提供微信公眾號、軟件開發、關鍵詞優化、標簽優化、企業網站制作、外貿網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯