1. 程式人生 > 資訊 >愛立信起訴蘋果:要求法院宣告其 5G 專利許可費率符合 FRAND 原則

愛立信起訴蘋果:要求法院宣告其 5G 專利許可費率符合 FRAND 原則

1.優化的範圍

a. 儲存.主機和作業系統:
    主機架構穩定性
    I/O規劃及配置
    Swap
    OS 核心引數
    網路問題
    
b. 應用:(Index,lock,session)
     應用程式穩定性和效能
     SQL語句效能
     序列訪問資源
     效能欠佳會話管理
     
c. 資料庫優化:(記憶體.資料庫設計.引數)
     記憶體
     資料庫結構(物理&邏輯)
     例項配置

2.優化工具介紹

1.系統屋 :CPU IO MEM

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 )

2 .資料庫層

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

3.優化思路(單獨主機)

1. 未優化前的壓力測試

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

2.主機.儲存.網路

主機:
真實的硬體(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),交換機堆疊
以上問題,提前規避掉.

3.系統

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排程策略

4.資料庫例項(引數) ----參照以上引數微調

[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