golang中error处理方式
- Sentinel errors
- Error Types
- Opaque errors
1 |
excel表格操作库,对日期格式的数据读写还不是很完善,能识别的日期格式返回一个01-02-06(day-month-day)格式的字符串,无法识别时直接返回的是excel表格中的原始数据,一个浮点型数,在excel中支持很多种日期格式显示。
1 | file,err:=excelize.OpenFile(filepath) |
1 | file:=excelize.NewFile() |
大部分错误最先从代码层面开始找,比较有效率,服务器配置之类的改动毕竟比较少;错误日志需要仔细查看,往往兜兜转转找了一圈会发现
错误提示一开始就清晰地摆在面前.
下决定前多思考.
1 | lsb_release |
1 | LSB Version: :core-4.1-amd64:core-4.1-noarch |
table
column | type | null | default | description |
---|---|---|---|---|
start_time | timestamp(6) | NO | CURRENT_TIMESTAMP(6) | Time the query began. |
user_host | mediumtext | NO | NULL | User and host combination. |
query_time | time(6) | NO | NULL | Total time the query took to execute. |
lock_time | time(6) | NO | NULL | Total time the query was locked. |
rows_sent | int(11) | NO | NULL | Number of rows sent. |
rows_examined | int(11) | NO | NULL | Number of rows examined. |
db | varchar(512) | NO | NULL | Default database. |
last_insert_id | int(11) | NO | NULL | last_insert_id. |
insert_id | int(11) | NO | NULL | Insert id. |
server_id | int(10) unsigned | NO | NULL | The server’s id. |
sql_text | mediumtext | NO | NULL | Full query. |
thread_id | bigint(21) unsigned | NO | NULL | Thread id. |
rows_affected | int(11) | NO | NULL | Number of rows affected by an UPDATE or DELETE (from MariaDB 10.1.2) |
reference
1 | show variables like 'long%'; |
1 | set long_query_time=0.5; |
1 | select * from mysql.slow_log; |
在无索引的表中查询会进行全表扫描,如果表的数据量很大,则扫描大量的数据,执行效率过
慢,占用数据库连接,连接数堆积很快达到数据库的最大连接数设置,新的应用请求将会被拒绝导致故障发生。
隐式转换也会导致索引无法使用.
使用mysql的explain分析sql,查看执行计划.
1 | // type为ALL,是全表扫描,每次执行需要扫描505560行数据 |
1 | // 执行计划看到type为ref,基于索引的等值查询,或者表间等值连接 |
tldr工具获取的iperf用法如下:
1 | iperf |
分别启动server和client进行测试,如:
1 | iperf -s -p 9988 -f M |
1 | address, err := net.ResolveTCPAddr("tcp", "http://server_address:18090") |
无法建立tcp连接,timeout
服务器上无可用端口用于测试,仅开放的80,443等端口已被网页服务服务占用,可以通过ssh端口转发到一个未暴露的端口,在该端口启动iperf的服务端进行测试.
1 | ssh -L local_port:localhost:server_port_for_iperf -N -T user@server_address -p server_ssh_port |
在服务器上启动iperf server
1 | iperf -s -p port -f M |
1 | [ ID] Interval Transfer Bandwidth |
3.