愛立信起訴蘋果:要求法院宣告其 5G 專利許可費率符合 FRAND 原則
阿新 • • 發佈:2021-10-11
1.
a. 儲存.主機和作業系統: 主機架構穩定性 I/O規劃及配置 Swap OS 核心引數 網路問題 b. 應用:(Index,lock,session) 應用程式穩定性和效能 SQL語句效能 序列訪問資源 效能欠佳會話管理 c. 資料庫優化:(記憶體.資料庫設計.引數) 記憶體 資料庫結構(物理&邏輯) 例項配置
2.
CPU: 計算(主)和排程 (次) MEM: 快取和緩衝 (用於磁碟) IO: 輸入1. top 命令 (用於檢視CPU MEM) a. CPU: [root@db01 ~15:27:42]# top %Cpu(s): 0.3 us, 0.3 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.3 si, 0.0 st 平均佔比 最多100% 舉列:%Cpu(s): 99.3 us, 0.3 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.3 si, 0.0 st us: 使用者程式工作所佔用的時間片佔比 (用於有效計算--) 這個高表示說明CPU 是在做計算,做正事 sy: 核心工作花費的cpu時間片佔比 (用於排程--)如果高表示cpu 在做不正常事,排程佔比少比較好 過高原因: 核心本身bug 中病毒等 各種資源的排程和分配 併發很高 鎖id: 空閒的CPU時間片佔比 值越小,表示CPU越繁忙 wa: CPU 用來等待的時間片佔比 IO 如radio 做的不好 等待大的處理事件 鎖 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 實時觀察CPU 記憶體情況 %CPU 當前某個程式佔用總CPU的使用率. 如果是4核CPU,滿核為400%,如果是單核100%. 壓力測試: create database test; use test; source /root/t100w.sql #匯入資料 mysqlslap--defaults-file=/etc/my.cnf --concurrency=100 --iterations=1 --create-schema='test' --query="select * from test.t100w where k2='780P'" engine=innodb --number-of-queries=2000 -uroot -p123456abcd -verbose --concurrency=100 : 模擬同時100會話連線 --create-schema='test' : 操作的庫是誰 --query="select * from test.t100w where k2='780P'" :做了什麼操作 --number-of-queries=2000 : ⼀共做了多少次查詢 Running for engine rbose Average number of seconds to run all queries: 648.657 seconds Minimum number of seconds to run all queries: 648.657 seconds Maximum number of seconds to run all queries: 648.657 seconds Number of clients running queries: 100 Average number of queries per client: 20 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 7476 mysql 20 0 1183400 320876 12868 S 99.0 32.2 3:45.84 mysqld 可以看出mysql佔用cpu率 ************************************************************************* 在top 介面按數字1,可以看到每片cpu 的使用率.因為有時需要檢視每片cpu 是用使用的平均 ************************************************************************* b. 記憶體 [root@db01 ~22:56:49]# top KiB Mem : 995896 total, 124292 free, 421644 used, 449960 buff/cache KiB Swap: 1048572 total, 1048572 free, 0 used. 396272 avail Mem mysql伺服器中一般會禁用掉Swap ,如果是檔案伺服器可以有這個Swap 主要看這條: 396272 avail Mem 表示可用的記憶體大小,如果不夠可以增加記憶體條 2. IOstat 命令 (用於查IO) iostat -dk 1 如果沒有這個命令用 yum install -y sysstat [root@db01 ~23:17:18]# iostat -dk 1 Linux 3.10.0-957.el7.x86_64 (db01) 02/08/2021 _x86_64_ (1 CPU) Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 0.22 2.99 8.35 187538 523781 scd0 0.00 0.02 0.00 1028 0 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 0.00 0.00 0.00 0 0 scd0 0.00 0.00 0.00 0 0 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 0.00 0.00 0.00 0 0 scd0 0.00 0.00 0.00 0 0 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 0.00 0.00 0.00 0 0 scd0 0.00 0.00 0.00 0 0 一般情況下,cpu 高,IO 也應該高. 如果:CPU 高 ,IO 比較低 wait 高: 有可能IO出問題了(raid,過度條帶化) SYS 高: 有可能是鎖的問題,需要進一步去資料庫中判斷和排查 3. glances 命令(檢視cpu mem IO) [root@db01 ~23:30:14]# glances 如果沒有可以直接yum install -y glances db01 (CentOS Linux 7.6.1810 64bit / Linux 3.10.0-957.el7.x86_64) Uptime: 17:36:50 CPU [ 3.8%] CPU 3.8% nice: 0.0% MEM 61.2% SWAP 0.0% LOAD 1-core MEM [ 61.2%] user: 2.2% irq: 0.0% total: 973M total: 1024M 1 min: 0.10 SWAP [ 0.0%] system: 1.3% iowait: 0.0% used: 595M used: 264K 5 min: 5.50 idle: 96.5% steal: 0.0% free: 377M free: 1024M 15 min: 30.85 4. htop 命令(檢視CPU MEM )
show status show variables show index show processlist show slave status show engine innodb status desc /explain slowlog 擴充套件類深度優化: PT 系列(pt-query-sigest pt-osc pt-index 等) mysqlslap 壓力測試 sysbench information_schema performance_schema (P_S) sys
create database test charset utf8mb4; use test; set sql_log_bin=0; source t100w.sql; grant 0n *.* to root@'localhost' identified by '123456abcd' mysqlslap --defaults-file=/etc/my.cnf \ --concurrency=100 --iterations=1 --create-schema='test'\ --query="select * from test.t100w where k2='ABxy'" engine=innodb \ --number-of-queries=2000 -uroot -p123456abcd -verbose
主機: 真實的硬體(PC server):DELL R系統,華為,浪潮,HP,曙光.聯想 雲產品: ECS.資料庫RDS.DRDS.PolarDB CPU 根據資料庫型別 OLTP OLAP IO密集型:線上系統,OLTP主要是IO密集型的業務,高併發 CPU密集型:資料分板資料處理,OLAP,CPU密集型的,需要cpu高計算能力(i 系列,IBM Power系列) cpu密集型: I系列的,主頻很高,核心少 IO密集型: E系列的,主頻相對低,核心數量多 記憶體: 建議2-3倍cpu核心數量 ( ECC) 磁碟選擇: SATA-III SAS FC SSD 主機 RAID 卡的BBU 關閉 儲存: raid0:條帶化,效能高 raid1:映象,安全 raid5:校驗+條帶化,安全較高+效能較高(讀),寫效能較低(適合於讀多寫少) raid10:安全+效能都很高,最少四塊磁碟,浪費一增的空間(高IO要求) 網路: 1.硬體買好的(單卡單口) 2.網絡卡繫結(bonding),交換機堆疊 以上問題,提前規避掉.
Swap 調整 臨時調整 echo 0 >/proc/sys/vm/swapiness #將內容改為0,預設為30,當記憶體達到70%時就會使用Swap分割槽 永久調整 vim /etc/sysctl.conf 在最後一行增加一行vm.swapiness=0 永久生效 執行sysctl -p IO排程策略 centos7 預設是deadline cat /sys/block/sda/queue/scheduler 臨時修改為deadline(centos6) echo deadline >/sys/block/sda/queue/scheduler vim /boot/grub/grub.conf 更改到如下內容: kernel /boot/vmlinuz-2.6.18-e15 ro root=LABEL=/ elevator=deadline rhgb quiet IO: raid no lvm ext4或xfs 最好是xfs ssd IO排程策略
[mysqld] basedir=/data/mysql datadir=/data/mysql/data socket=/tmp/mysql.sock log-error=/var/log/mysql.log log_bin=/data/binlog/mysql-bin binlog_format=row skip-name-resolve server-id=52 gtid-mode=on enforce-gtid-consistency=true log-slave-updates=1 relay_log_purge=0 max_connections=1024 back_log=128 wait_timeout=60 interactive_timeout=7200 key_buffer_size=16M query_cache_size=64M query_cache_type=1 query_cache_limit=50M max_connect_errors=20 sort_buffer_size=2M max_allowed_packet=32M join_buffer_size=2M thread_cache_size=200 innodb_buffer_pool_size=1024M innodb_flush_log_at_trx_commit=1 innodb_log_buffer_size=32M innodb_log_file_size=128M innodb_log_files_in_group=3 binlog_cache_size=2M max_binlog_cache_size=8M max_binlog_size=512M expire_logs_days=7 read_buffer_size=2M read_rnd_buffer_size=2M bulk_insert_buffer_size=8M [client] socket=/tmp/mysql.sock 再次壓力測試 : mysqlslap --defaults-file=/etc/my.cnf --concurrency=100 --iterations=1 --create-schema='oldboy' --query="select * from oldboy.t_100w where k2='FGCD'" engine=innodb --number-of-queries=200000 -uroot -p123 -verbose
Do everything well