03:TPCC 基准压测my.cnf
- line: V1.3
- mail: gczheng@139.com
- date: 2017-11-09
一、TPCC测试前准备
1、压测环境
配置 | 信息 |
---|---|
主机 | Dell PowerEdge R730xd |
CPU | 24xIntel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz |
内存 | 64G(16G * 4) |
RAID卡 | LSI Logic MegaRAID SAS |
系统 | "Red Hat Enterprise Linux Server release 7.3 (Maipo)" |
内核 | "3.10.0-514.el7.x86_64" |
raid级别 | RAID1 |
文件系统 | ext4 |
硬盘 | 7.2K RPM, 6000G SAS, 12G/s |
2、压测基准值
测试工具 | tpcc-mysql |
---|---|
测试Warehouse数 | 1000 |
warmup time(秒) | 120 |
run time(秒) | 2700 |
并发线程数 | 8 - 256 |
压测次数 | 3 |
my.cnf
# line V1.2
# mail:
# data: 2017-10-26
# file_name: my.cnf
# function: 无数据一致性要求,只要求update速度快
## optimized mysql configure file my.cnf
## 注意:建议参数可需要根据实际情况作调整
## 本配置文件主要适用于MySQL 5.7.18版本
# ********* 以下重要参数必须修改核对 *********
# 1.innodb_flush_log_at_trx_commit=2
# 2.sync_binlog = 0
# 3.innodb_strict_mode = OFF
# 4.innodb_flush_method = O_DIRECT
# 5.lower_case_table_names = 0
# 6.character-set-server = utf8
# 7.sql_mode 配置为空值
# 8.server-id =1 修改成对应数值
# 9.innodb_buffer_pool_size = 32G
# ********************************************
[client]
port = 3306
socket = /r2/soft/dbtest/mysql-5.7.18/mysqldata/mysql.sock
#=======================================================================
# # MySQL客户端配置
#=======================================================================
[mysql]
prompt="\u@ipanel \R:\m:\s [\d]> "
#no-auto-rehash
#=======================================================================
# MySQL服务器全局配置
#=======================================================================
[mysqld]
user = mysql
port = 3306
server-id = 168
tmpdir = /r2/soft/dbtest/mysql-5.7.18/mysqldata
datadir = /r2/soft/dbtest/mysql-5.7.18/mysqldata
socket = /r2/soft/dbtest/mysql-5.7.18/mysqldata/mysql.sock
wait_timeout = 31536000
#interactive_timeout = 600
sql_mode =
#sql_mode 配置为空值
skip_name_resolve = 1
lower_case_table_names = 0
character-set-server = utf8
#auto_increment_increment = 1
#auto_increment_offset = 1
# init_connect =
######################### 性能参数 ####################
open_files_limit = 1024000
max_connections = 10000
max_user_connections=9990
max_connect_errors = 100000
table_open_cache = 1024
max_allowed_packet = 128M
thread_cache_size = 64
max_heap_table_size = 32M
query_cache_type = 0
###global cache ###
key_buffer_size = 16M
query_cache_size = 0
###session cache ###
sort_buffer_size = 8M #排序缓冲
join_buffer_size = 4M #表连接缓冲
read_buffer_size = 8M #顺序读缓冲
read_rnd_buffer_size = 8M #随机读缓冲
tmp_table_size = 32M #内存临时表
binlog_cache_size = 4M #二进制日志缓冲
thread_stack = 256KB #线程的堆栈的大小
######################### binlog设置 #####################
binlog_format = MIXED
log_bin = /r2/soft/dbtest/mysql-5.7.18/mysqldata/binlog
max_binlog_size = 1G
expire_logs_days = 30
sync_binlog = 0 #重要参数必须修改为0
######################### 复制设置 ########################
log_slave_updates=1
#replicate-do-db=User
#binlog-ignore-db = test
#slave-skip-errors=1146,1032,1062
### GTID 配置 ###
gtid_mode=ON
enforce-gtid-consistency=true
######################### innodb ##########################
default_storage_engine = InnoDB
innodb_data_file_path = ibdata1:1G:autoextend
innodb_buffer_pool_size = 32G #系统内存50%
innodb_open_files = 1000000
innodb_flush_log_at_trx_commit = 2 #线上服务器必须配置为2
innodb_file_per_table = 1
innodb_lock_wait_timeout = 5
# 根据您的服务器IOPS能力适当调整innodb_io_capacity
# 一般配普通SSD盘的话,可以调整到 10000 - 20000
#innodb_io_capacity = 200
innodb_io_capacity = 600
innodb_io_capacity_max = 20000
innodb_flush_method = O_DIRECT
innodb_log_file_size = 2G
innodb_log_files_in_group = 2
innodb_large_prefix = 0
innodb_thread_concurrency = 64
innodb_strict_mode = OFF
innodb_sort_buffer_size = 4194304
######################### log 设置 #####################
log_error = /r2/soft/dbtest/mysql-5.7.18/mysqldata/error.log
slow_query_log = 1
long_query_time = 1
slow_query_log_file = /r2/soft/dbtest/mysql-5.7.18/mysqldata/slow.log
#=======================================================================
# MySQL mysqldump配置
#=======================================================================
[mysqldump]
quick
max_allowed_packet = 32M
#=======================================================================
# MySQL mysqld_safe配置
#=======================================================================
[mysqld_safe]
log_error = /r2/soft/dbtest/mysql-5.7.18/mysqldata/error.log
pid_file = /r2/soft/dbtest/mysql-5.7.18/mysqldata/mysqldb.pid
二、进行OLTP测试
1、安装压测工具TPCC
[root@localhost-m(252) /usr/local/soft/dbtest]# yum install bzr
[root@localhost-m(252) /usr/local/soft/dbtest]# bzr branch lp:~percona-dev/perconatools/tpcc-mysql
[root@localhost-m(252) /usr/local/soft/dbtest]# cd tpcc-mysql/src
[root@localhost-m(252) /usr/local/soft/dbtest]# make
[root@localhost-m(252) /usr/local/soft/dbtest/tpcc-mysql/src]# cd ..
[root@localhost-m(252) /usr/local/soft/dbtest/tpcc-mysql]# ll
total 308
-rw-r--r-- 1 root root 1918 11月 6 16:09 !
-rw-r--r-- 1 root root 1621 11月 6 15:22 add_fkey_idx.sql
-rw-r--r-- 1 root root 317 11月 6 10:00 count.sql
-rw-r--r-- 1 root root 3105 11月 6 10:00 create_table.sql
-rw-r--r-- 1 root root 763 11月 6 10:00 drop_cons.sql
-rwxr-xr-x 1 root root 1937 11月 6 16:55 go_test.sh
-rw-r--r-- 1 root root 477 11月 6 10:00 load.sh
drwxr-xr-x 2 root root 4096 11月 7 11:32 logs
lrwxrwxrwx 1 root root 49 11月 6 13:51 mysql.sock -> /r2/soft/dbtest/mysql-5.7.18/mysqldata/mysql.sock -- 注意 ln -s /var/lib/mysql/mysql.sock
-rw-r--r-- 1 root root 851 11月 6 10:00 README
drwxr-xr-x 2 root root 4096 11月 6 10:00 schema2
drwxr-xr-x 5 root root 4096 11月 6 10:00 scripts
drwxr-xr-x 2 root root 4096 11月 6 10:06 src
-rwxr-xr-x 1 root root 71840 11月 6 10:06 tpcc_load --新生成
-rwxr-xr-x 1 root root 172864 11月 6 10:06 tpcc_start --新生成
2、TPCC 命令
tpcc_load的用法
[root@localhost-m(252) /usr/local/soft/dbtest/tpcc-mysql]# tpcc_load --help
*************************************
*** ###easy### TPC-C Data Loader ***
*************************************
usage: tpcc_load [server] [DB] [user] [pass] [warehouse]
OR
tpcc_load [server] [DB] [user] [pass] [warehouse] [part] [min_wh] [max_wh]
* [part]: 1=ITEMS 2=WAREHOUSE 3=CUSTOMER 4=ORDERS
- 选项说明
- Server: 服务器名
- DB: 数据库名
- user: 用户名
- pass: 密码
- Warehouse: 仓库的数量
- 命令 ./tpcc_load localhost tpcc1000 root "xxx" 1000
- 在这里,需要注意的是 tpcc 默认会读取 /var/lib/mysql/mysql.sock 这个socket位置,因此如果你的socket不在相应路径的话,就需要做个软连接,或者通过TCP/IP的方式连接测试服务器。加载测试数据时长视仓库数量而定。
tpcc_start的用法
[root@localhost-m(252) /usr/local/soft/dbtest/tpcc-mysql]# tpcc_start --help
***************************************
*** ###easy### TPC-C Load Generator ***
***************************************
tpcc_start: invalid option -- '-'
Usage: tpcc_start -h server_host -P port -d database_name -u mysql_user -p mysql_password -w warehouses -c connections -r warmup_time -l running_time -i report_interval -freport_file -t trx_file
- 选项说明
- 命令tpcc_start -h server_host -P port -d database_name -u mysql_user -p mysql_password -w warehouses -c connections -r warmup_time -l running_time -i report_interval -f report_file
- -w 指定仓库数量
- -c 指定并发连接数
- -r 指定开始测试前进行warmup的时间,进行预热后,测试效果更好
- -l 指定测试持续时间
- -I 指定生成报告间隔时长
- -f 指定生成的报告文件名
Test 脚本
#!/bin/bash
# line: V1.0
# mail: gczheng@139.com
# data: 2017-11-06
# file_name: go_tpcc_test.sh
# 执行tpcc mysql OLTP基准测试
#export LD_LIBRARY_PATH=/usr/local/mysql/lib/
. ~/.bash_profile >/dev/null 2>&1
#执行tpcc测试的数据库IP
DBIP=localhost
DBUSER='gcdb'
DBPASS='iforgot'
#测试模式:1000个仓库
WIREHOUSE=1000
DBNAME="tpcc${WIREHOUSE}"
#数据预热时间:120秒
WARMUP=120
#执行测试时长:1小时
DURING=3600
#测试模式
MODE="SAS_JBOD_WB_nobarrier_deadline"
SOCK="/r2/soft/dbtest/mysql-5.7.18/mysqldata/mysql.sock"
BASEDIR="/r2/soft/dbtest/tpcc-mysql"
LOGSDIR=$BASEDIR/logs
cd $BASEDIR
if [ ! -d "$LOGSDIR" ]; then
mkdir -p "$LOGSDIR"
fi
exec 3>&1 4>&2 1>> ./logs/tpcc-oltp-`date +'%Y-%m-%d-%H-%M-%S'`.log 2>&1
#初始化测试环境
if [ -z "`/r2/soft/dbtest/mysql-5.7.18/bin/mysqlshow -u$DBUSER -p$DBPASS -S $SOCK|grep -v grep|grep \"$DBNAME\"`" ] ; then
mysqladmin -u$DBUSER -p$DBPASS -S $SOCK -f create $DBNAME
#/r2/soft/dbtest/mysql-5.7.18/bin/mysql -u$DBUSER -p$DBPASS -S $SOCK -e "grant all on $DBNAME.* to $DBUSER@'$DBIP' identified by '$DBPASS';"
/r2/soft/dbtest/mysql-5.7.18/bin/mysql -u$DBUSER -p$DBPASS -S $SOCK -f $DBNAME < ./create_table.sql
./tpcc_load $DBIP $DBNAME $DBUSER $DBPASS $WIREHOUSE
/r2/soft/dbtest/mysql-5.7.18/bin/mysql -u$DBUSER -p$DBPASS -S $SOCK -f $DBNAME < ./add_fkey_idx.sql
fi
CNT=0
CYCLE=2
while [ $CNT -lt $CYCLE ]
do
NOW=`date +'%Y%m%d%H%M'`
#测试并发线程:8 ~ 256
#for THREADS in 8 16
for THREADS in 8 16 32 64 128 256
do
#开始执行tpcc测试
./tpcc_start -h $DBIP -d $DBNAME -u $DBUSER -p "${DBPASS}" -w $WIREHOUSE -c $THREADS -r $WARMUP -l $DURING -f ./logs/tpcc_${MODE}_${NOW}_${THREADS}_THREADS.res >> ./logs/tpcc_runlog_${MODE}_${NOW}_${THREADS}_THREADS 2>&1
#重启mysqld
#/r2/soft/dbtest/mysql-5.7.18/bin/mysqladmin -u$DBUSER -p$DBPASS -S $SOCK shutdown;
echo 3 > /proc/sys/vm/drop_caches ;
#/r2/soft/dbtest/mysql-5.7.18/bin/mysqld_safe --defaults-file=/r2/soft/dbtest/mysql-5.7.18/my.cnf \& ;
sleep 60
done
#sleep 60
CNT=`expr $CNT + 1`
done
- 生成16个表,1000仓库,数据+索引(69.2G)
- 执行压测,六种线程模式(8,16,32,64,128,256),三次循环共18次压测
[root@localhost-m(252) /r2/soft/dbtest/tpcc-mysql]# sh -x go_tpcc_test.sh
[root@localhost-m(252) /r2/soft/dbtest/tpcc-mysql/logs]# ll
total 16860
-rw-r--r-- 1 root root 3107118 11月 7 13:08 tpcc-oltp-2017-11-06-16-56-15.log
-rw-r--r-- 1 root root 85 11月 7 15:51 tpcc-oltp-2017-11-07-15-51-00.log
-rw-r--r-- 1 root root 36143 11月 7 07:31 tpcc_runlog_SAS_JBOD_WB_nobarrier_deadline_201711070331_128_THREADS
-rw-r--r-- 1 root root 29271 11月 7 05:07 tpcc_runlog_SAS_JBOD_WB_nobarrier_deadline_201711070331_16_THREADS
-rw-r--r-- 1 root root 98716 11月 7 08:19 tpcc_runlog_SAS_JBOD_WB_nobarrier_deadline_201711070331_256_THREADS
-rw-r--r-- 1 root root 29319 11月 7 05:55 tpcc_runlog_SAS_JBOD_WB_nobarrier_deadline_201711070331_32_THREADS
-rw-r--r-- 1 root root 31856 11月 7 06:43 tpcc_runlog_SAS_JBOD_WB_nobarrier_deadline_201711070331_64_THREADS
-rw-r--r-- 1 root root 29064 11月 7 04:18 tpcc_runlog_SAS_JBOD_WB_nobarrier_deadline_201711070331_8_THREADS
-rw-r--r-- 1 root root 34624 11月 7 12:19 tpcc_runlog_SAS_JBOD_WB_nobarrier_deadline_201711070820_128_THREADS
-rw-r--r-- 1 root root 29019 11月 7 09:55 tpcc_runlog_SAS_JBOD_WB_nobarrier_deadline_201711070820_16_THREADS
-rw-r--r-- 1 root root 105813 11月 7 13:07 tpcc_runlog_SAS_JBOD_WB_nobarrier_deadline_201711070820_256_THREADS
-rw-r--r-- 1 root root 29132 11月 7 10:43 tpcc_runlog_SAS_JBOD_WB_nobarrier_deadline_201711070820_32_THREADS
-rw-r--r-- 1 root root 31754 11月 7 11:31 tpcc_runlog_SAS_JBOD_WB_nobarrier_deadline_201711070820_64_THREADS
-rw-r--r-- 1 root root 28969 11月 7 09:07 tpcc_runlog_SAS_JBOD_WB_nobarrier_deadline_201711070820_8_THREADS
-rw-r--r-- 1 root root 46474 11月 7 21:05 tpcc_runlog_SAS_JBOD_WB_nobarrier_deadline_201711071551_128_THREADS
-rw-r--r-- 1 root root 38292 11月 7 17:56 tpcc_runlog_SAS_JBOD_WB_nobarrier_deadline_201711071551_16_THREADS
-rw-r--r-- 1 root root 110579 11月 7 22:08 tpcc_runlog_SAS_JBOD_WB_nobarrier_deadline_201711071551_256_THREADS
-rw-r--r-- 1 root root 39176 11月 7 18:59 tpcc_runlog_SAS_JBOD_WB_nobarrier_deadline_201711071551_32_THREADS
-rw-r--r-- 1 root root 44458 11月 7 20:02 tpcc_runlog_SAS_JBOD_WB_nobarrier_deadline_201711071551_64_THREADS
-rw-r--r-- 1 root root 38386 11月 7 16:53 tpcc_runlog_SAS_JBOD_WB_nobarrier_deadline_201711071551_8_THREADS
三、TPCC测试结果解读
- 以下是18次任务中的一次结果解读
[root@localhost-m(252) /r2/soft/dbtest/tpcc-mysql/logs]# cat tpcc_runlog_SAS_JBOD_WB_nobarrier_deadline_201711071551_64_THREADS
***************************************
*** ###easy### TPC-C Load Generator ***
***************************************
option h with value 'localhost' --主机名
option d with value 'tpcc1000' --数据库名
option u with value 'gcdb' --账号
option p with value 'iforgot' --密码
option w with value '1000' --仓库数量
option c with value '64' --线程数
option r with value '120' --数据预热时长(秒)
option l with value '3600' --压测时长(秒)
option f with value './logs/tpcc_SAS_JBOD_WB_nobarrier_deadline_201711071551_64_THREADS.res' --日志输出
<Parameters>
[server]: localhost
[port]: 3306
[DBname]: tpcc1000
[user]: gcdb
[pass]: iforgot
[warehouse]: 1000
[connection]: 64
[rampup]: 120 (sec.)
[measure]: 3600 (sec.)
RAMP-UP TIME.(120 sec.)
delivery 26:2
1205, HY000, Lock wait timeout exceeded; try restarting transaction
MEASURING START. -- 预热结束,开始进行压测
10, 291(0):3.347|3.976, 296(0):0.700|0.799, 29(0):0.302|0.323, 43(0):3.493|3.942, 30(0):9.011|9.744 -- 每10秒钟输出一次压测数据
......
......
......
3590, 333(0):2.976|3.626, 334(0):0.694|0.758, 34(0):0.304|0.375, 36(0):3.604|3.701, 33(0):6.798|8.263
3600, 333(0):2.935|3.214, 348(0):0.658|0.758, 36(0):0.295|0.318, 57(0):3.100|3.402, 34(0):7.030|7.314
-- 以逗号分隔,共6列
-- 第一列,第N次10秒
-- 第二列,新订单成功执行压测的次数(推迟执行压测的次数):90%事务的响应时间|本轮测试最大响应时间,新订单事务数也被认为是总有效事务数的指标
-- 第三列,支付业务成功执行次数(推迟执行次数):90%事务的响应时间|本轮测试最大响应时间
-- 第四列,订单状态业务的结果,后面几个的意义同上
-- 第五列,物流发货业务的结果,后面几个的意义同上
-- 第六列,库存仓储业务的结果,后面几个的意义同上
STOPPING THREADS................................................................ -- 结束压测
<Raw Results> -- 第一次统计结果
[0] sc:67227 lt:0 rt:1 fl:0 -- New-Order,新订单业务成功(success,简写sc)次数,延迟(late,简写lt)次数,重试(retry,简写rt)次数,失败(failure,简写fl)次数
[1] sc:67236 lt:0 rt:4 fl:0 -- Payment,支付业务统计,其他同上
[2] sc:6726 lt:0 rt:0 fl:0 -- Order-Status,订单状态业务统计,其他同上
[3] sc:6753 lt:0 rt:72 fl:0 -- Delivery,发货业务统计,其他同上
[4] sc:6725 lt:0 rt:0 fl:0 -- Stock-Level,库存业务统计,其他同上
in 3600 sec. -- 一个小时内(3600s)
<Raw Results2(sum ver.)> -- 第二次统计结果,其他同上
[0] sc:67227 lt:0 rt:1 fl:0
[1] sc:67247 lt:0 rt:4 fl:0
[2] sc:6726 lt:0 rt:0 fl:0
[3] sc:6753 lt:0 rt:72 fl:0
[4] sc:6725 lt:0 rt:0 fl:0
<Constraint Check> (all must be [OK]) -- 下面所有业务逻辑结果都必须为 OK 才行
[transaction percentage]
Payment: 43.47% (>=43.0%) [OK] -- 支付成功次数(上述统计结果中 sc + lt)必须大于43.0%,否则结果为NG,而不是OK
Order-Status: 4.35% (>= 4.0%) [OK] -- 订单状态,其他同上
Delivery: 4.37% (>= 4.0%) [OK] -- 发货,其他同上
Stock-Level: 4.35% (>= 4.0%) [OK] -- 库存,其他同上
[response time (at least 90% passed)] -- 响应耗时指标必须超过90%通过才行
New-Order: 100.00% [OK] -- 下面几个响应耗时指标全部 100% 通过
Payment: 100.00% [OK]
Order-Status: 100.00% [OK]
Delivery: 100.00% [OK]
Stock-Level: 100.00% [OK]
<TpmC>
1120.450 TpmC -- TpmC结果值(每分钟事务数,该值是第一次统计结果中的新订单事务数除以总耗时分钟数,即:67227/60=1120.450)
[root@localhost-m(252) /r2/soft/dbtest/tpcc-mysql/logs]#
四、关于测试过程中MySQL各种状态
时间区间 2017-11-07 15:30:00 to 2017-11-07 22:30:00
1、Disk io 状态
2、CPU和内存使用情况
3、innodb使用情况
4、增删改查统计
五、关于测试结果和建议
1、统计三次循环压测结果并画图
横轴为==线程数==,竖轴为==每分钟事务数==
整个压测进行3次,线程数从8~256,表16个,1000仓库数,数据量69G;从上面几张状态图可以看出看16:08开始已经出现io使用率100%并且io出现延迟情况,到17:02时CPU出现io等待,已经可以确定io出现瓶颈
由于IO出现瓶颈,TPCC并发线程达到==64==个之后==每分钟事务数==趋于稳定1390左右
2、建议
建议用/r2目录所在磁盘(RAID1 SAS 7.2K 3.5 12G/s 6T) 进行磁盘升级
目前瓶颈在io上面,内存和cpu都满是需求,把日志分开保存有效利用io
03:TPCC 基准压测my.cnf的更多相关文章
- 02:Sysbench基准压测(oltp_update_index.lua、oltp_update_non_index.lua)my.cnf
目录 Sysbench 基准压测 my.cnf 一.Sysench测试前准备 1.1.压测环境 二.进行OLTP_update测试 2.1.安装压测工具sysbench 2.2.执行压测 三.执行结果 ...
- 01:Sysbench 基准压测 IO篇
line:V1.1 mail: gczheng@139.com date: 2017-11-17 一.Sysench测试前准备 1.1.压测环境 配置 信息 主机 Dell PowerEdge R73 ...
- 关于mysql性能压测之tpcc
软件下载: wget http://imysql.com/wp-content/uploads/2014/09/tpcc-mysql-src.tgz安装依赖:yum install -y mysql- ...
- 【MySQL】sysbench压测服务器及结果解读
主要压测范围包括CPU测试.磁盘IO测试.线程测试.OLTP测试等,那么sysbench就可以满足我们的压测需求.下面我们简单来看下sysbench的安装使用以及压测结果的解读. 一.sysbench ...
- 05:Sysbench压测-innodb_deadlock_detect参数对性能的影响
目录 sysbench压测-innodb_deadlock_detect参数对性能的影响 一.OLTP测试前准备 二.进行OLTP测试 三.测试结果解读: 四.关于测试后的结论: 五.关于测试后的性能 ...
- Netty NIO 框架性能压测-短链接-对比Tomcat
压测方案 准备多个文件大小分别为 1k 10k 100k 300k 使用ab分别按 [50,2000](按50逐渐叠加)压测服务,每次请求10W次 硬件信息:CPU:Intel(R) Xeon(R) ...
- docker内存监控与压测
一直运行的docker容器显示内存已经耗尽,并且容器内存耗尽也没出现重启情况,通过后台查看发现进程没有占用多少内存.内存的监控使用的是cadvisor,计算方式也是使用cadvisor的页面计算方式, ...
- jmeter压测之添加负载机
jmeter压测基本介绍一般基准测试(基准测试时间一般为5分钟)后压测的时间是10-15分钟: 实施测试之前要拿到测试指标 例如:tps要达到多少响应时间要达到多少并发数要达到多少TPS :服务端每秒 ...
- mysql常用压测工具
关键字:mysql压测工具 mysqlslap.sysbench 基准测试sysbench 压力测试 tpcc 具体怎么使用百度
随机推荐
- H.264采集、编码、传输的流程
转载自H.264采集.编码.传输的流程 1 采集到的原始数据放入buf中 2 转化为yuv格式放入yuv conv.RGB24_to_YV12(buf, yuv,IMAGE_WIDTH, IMAGE_ ...
- cookie和session的区别与联系
http://www.cnblogs.com/s1nker/p/4876284.html 基本概念 对于许多人来说,都知道的是,cookie是存储在客户端的,可以用来放需要长期使用的内容,例如用户密码 ...
- Shell 命令行 从日志文件中根据将符合内容的日志输出到另一个文件
Shell 命令行 从日志文件中根据将符合内容的日志输出到另一个文件 前面我写了一篇博文Shell 从日志文件中选择时间段内的日志输出到另一个文件,利用循环实现了我想要实现的内容. 但是用这个脚本的同 ...
- MQTT再学习 -- 漫谈MQTT协议
先占楼,稍后再讲.先搭建好MQTT服务器和客户端
- 利用sklearn的LabelEncoder对标签进行数字化编码
from sklearn.preprocessing import LabelEncoder def gen_label_encoder(): labels = ['BB', 'CC'] le = L ...
- 如何看待 Kotlin 成为 Android 官方支持开发语言?
Google IO 2017宣布了 Kotlin 会成为 Android 官方开发语言.一时间朋友圈和Android圈被各种刷屏.当然我也顺势而为发布了一篇的文章<为什么我要改用Kotlin&g ...
- 2018秋C语言程序设计(初级)作业- 第3次作业
7-1 找出最小值 #include<stdio.h> int main() { int min,i,n,count; scanf("%d",&n); for( ...
- [IC]Lithograph(1)光刻技术分析与展望
文章主体转载自: 1.zol摩尔定律全靠它 CPU光刻技术分析与展望 2.wiki:Extreme ultraviolet lithography 3.ITRS 2012 1. 光刻技术组成和关键点 ...
- Mini Stirling engine
So I spent 5 or 6 hours last night trying to hook up a mini Stirling engine with the gearbox of a Ta ...
- 【解题报告】CF Round #320 (Div. 2)
Raising Bacteria 题意:盒子里面的细菌每天会数量翻倍,你可以在任意一天放任意多的细菌,最后要使得某天盒子里面的细菌数量等于x,求至少要放多少个细菌 思路:显然,翻倍即为二进制左移一位, ...