Linux性能優化(CPU篇)(1)——uptime命令輸出的含義,什麼是系統負載?

上一篇中主要學習了一幅Linux優化圖譜,大概知道什麼方面優化用什麼適當的工具。這一篇跟隨倪老師,學習了幾大模塊優化中的最核心最重要的「CPU性能篇」,其他幾大模塊為「內存性能篇」「I/O性能篇」「網路性能篇」。現在總結下我學習CPU性能優化的摸索。(文末再給倪老師打個廣告,哈哈)「平均負載」概念了解下。輸入uptime時,輸出如下: 前面的輸出很好了解,我們重點關注load ...
Read more

Go程序的問題診斷和性能調優指南

首先,看這篇指南的你應該對Go有了一定程度的了解。這篇指南可以讓你在處理各種異常問題和性能瓶頸上有所幫助。Go不是並發能力最強的,也不是性能最好的語言,使用Go的優勢在於,Go可以通過channel/select、goroutine等語言/運行時層面的機制簡化高並發代碼的開發。 ...
Read more

淺析Storm性能調優

Storm是一個分散式實時流式計算平台,storm集群主要由一個nimbus和多個supervisor組成,它們都把狀態存儲在zookeeper上,整體架構如下圖所示: 1.1 各組件的功能 nimbus: 主節點,負責將Topology的worker,根據所在集群的資源情況調度到合適的supervisor上。supervisor: 在工作節點上,負責啟動和運行Topology的進程(worker)。 worker:表示一個進程。所有的數據處理和傳輸都在worker中完成,nimbus和supervisor均不參與。executor:一個worker裡面可以執行一個或多個線程。task:一個executor執行一個或多個(一般是一個)。task分為Spout和Bolt兩種不同類型。zookeeper: 負責存儲nimbus和supervisor的狀態。 1.2 ...
Read more

Unity植被性能優化

由於是正在開發的項目, 不能發完整代碼, 如需要進一步交流可以私信本文優化主要對使用AlphaTest的植被做優化, 使用PreZ技術, 一些相關理論基礎可以參考fengliancanxue:深入剖析GPU Early Z優化?zhuanlan.zhihu.comflashyiyi:再議移動平台的AlphaTest效率問題?zhuanlan.zhihu.com 結論: 2016年以後出的大部分移動端GPU(Adreno, Mali, PowerVR), 經過實際測試都有EarlyZ的功能, 可見下文的詳細數據 利用引擎層面的PreZ可以大幅優化因為OverDraw所帶來的填充率瓶頸 優化過程: 我們手游項目中使用了比較多的植被, 刷的比較密集, 由於美術同學的需求,我們的植被需要接收並且投射陰影, 並且需要烘焙, 導致無法使用GPUInstance, ...
Read more

一文搞定Redis高級特性與性能調優

本文適合使用 Redis 的普通開發人員,以及對 Redis 進行選型、架構設計和性能調優的架構設計人員: Redis 的數據結構和相關常用命令 數據持久化 內存管理與數據淘汰機制 Pipelining 事務與 Scripting Redis 性能調優 主從複製與集群分片 Redis Java 客戶端的選擇 Redis 是一個開源的,基於內存的結構化數據存儲媒介,可以作為資料庫、緩存服務或消息服務使用。 Redis 支持多種數據結構,包括字元串、哈希表、鏈表、集合、有序集合、點陣圖、Hyperloglogs 等。Redis 具備 LRU 淘汰、事務實現、以及不同級別的硬碟持久化等能力,並且支持副本集和通過 Redis Sentinel 實現的高可用方案,同時還支持通過 Redis Cluster 實現的數據自動分片能力。Redis 的主要功能都基於單線程模型實現,也就是說 Redis ...
Read more

MySQL高性能優化規範建議,速度收藏

?所有資料庫對象名稱必須使用小寫字母並用下劃線分割?所有資料庫對象名稱禁止使用 MySQL 保留關鍵字(如果表名中包含關鍵字查詢時,需要將其用單引號括起來)?資料庫對象的命名要能做到見名識意,並且最後不要超過 32 個字元?臨時庫表必須以 tmp_為前綴並以日期為後綴,備份表必須以 bak_為前綴並以日期 (時間戳) 為後綴?所有存儲相同數據的列名和列類型必須一致(一般作為關聯列,如果查詢時關聯列類型不一致會自動進行數據類型隱式轉換,會造成列上的索引失效,導致查詢效率降低) 資料庫基本設計規範 1. 所有表必須使用 Innodb 存儲引擎沒有特殊要求(即 Innodb 無法滿足的功能如:列存儲,存儲空間數據等)的情況下,所有表必須使用 Innodb 存儲引擎(MySQL5.5 之前默認使用 Myisam,5.6 以後默認的為 Innodb)。Innodb ...
Read more

簡單優化容器服務

去年的時候,曾經寫過一篇使用 Docker 、Traefik 以及 Nginx 創建自動索引站點的文章,本篇內容將聊聊如何進行優化。包含內容:剝離容器配置中的變數、如何對容器進行健康檢查、如何限制容器日誌尺寸等。更新的項目代碼保存在: GitHub 上,可以自取。 剝離環境變數 前文的 docker-compose.yml 中,許多內容是直接寫死在文件中的,隨著配置文件越來越「複雜」、同類的服務啟動越來越多,我們需要將一些基礎的配置剝離出來,以方便後續的維護。 nginx: image: nginx:1.15.7-alpine labels: - "traefik.frontend.rule=Host:demo.soulteary.com" extra_hosts: - ...
Read more

Nginx 外的另一選擇,輕量級開源 Web 伺服器 Tengine 發布新版本

近日,輕量級開源 Web 伺服器 Tengine 發布了2.3.0版本,新增如下特性: ngx_http_proxy_connect_module,該模塊讓 Tengine 可以用於正向代理場景,支持對 CONNECT 方法請求的處理; HTTP2 Server粒度控制 新增 HTTP2指令,可針對 listen 相同埠的 server 進行個性化開啟與關閉 HTTP2; Stream模塊支持 server_name 指令,可在 SSL 場景下,基於 SNI 識別出域名,讓四層SSL 轉發支持特定的 server 塊配置; 加強a href="http://tengine.taobao.org/document_cn/http_core_cn.html"> limit_req 模塊功能,可以基於請求粒度動態設置限速大小,更多詳細變更日誌請參考limit_req ...
Read more

Go藉助PProf的一次性能優化

func lengthOfNonRepeatingSubStr(s string) int { lastOccurred := make(map[rune]int) start := 0 maxLength := 0 for i, ch := range []rune(s) { if lastI, ok := lastOccurred[ch]; ok && lastI >= start { start = lastI + 1 } if i-start+1 > maxLength { maxLength = i - start + 1 } lastOccurred[ch] = i } return ...
Read more

Linux性能優化的工具集和方法論

「為啥我的程序卡住了,它在做啥?」「磁碟卡死了,啥程序佔用的?」「該不該換成ssd?」我們常遇到各種性能問題, 該如何定位問題,解決問題。 本文主要介紹系統性能的度量指標,分析思路,及相關工具集。 目錄: ?系統性能指標和觀測方法?常用命令及平台-分析系統負載?動態追蹤-了解程序在做什麼?實戰案例 性能問題是充滿挑戰的: 性能是主觀的 磁碟平均io響應時間是10ms, 好或壞? 取決於業務需求及程序熱點系統是複雜的 子系統相互關聯,甚至有連鎖故障 運行環境不一(硬體/軟體)可能多問題並存 量化數據 控制變數法 觀測視角 資源分析(自下而上) 從系統的資源指標開始 更通用,適合資源被打滿的情況 工作負載分析(自上而下) 從應用的metrics和stack開始 ...
Read more
1 2 8 Next