Skip to content

Commit ad6bbda

Browse files
author
hekuangsheng
committed
Add desig file
1 parent 1e2d5e5 commit ad6bbda

1 file changed

Lines changed: 94 additions & 5 deletions

File tree

meituan-backend/meituan-backend-pdf_abstract.md

Lines changed: 94 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
# meituan-backend-pdf_abstract
2+
## [JVM源码](http://hg.openjdk.java.net/jdk8u)
3+
24
## 2018
35
```
46
### netty堆外内存泄漏(netty-socketio)
@@ -144,26 +146,66 @@ ParameterHandler:负责对用户传递的参数转换成 JDBC Statement 所需
144146
TypeHandler:负责 Java 数据类型和 JDBC 数据类型之间的映射和转换
145147
```
146148

147-
### [ES集群如何进行挨个重启?](https://elasticsearch.cn/question/4454)
149+
## 2020阿里
150+
### 如何正确地实现重试(Retry)
151+
```
152+
固定循环次数方式: 不带 backoff 的重试,对于下游来说会在失败发生时进一步遇到更多的请求压力,继而进一步恶化。
153+
带固定 delay 的方式:
154+
虽然这次带了固定间隔的 backoff,但是每次重试的间隔固定,此时对于下游资源的冲击将会变成间歇性的脉冲;
155+
特别是当集群都遇到类似的问题时,步调一致的脉冲,将会最终对资源造成很大的冲击,并陷入失败的循环中。
156+
带随机 delay 的方式:
157+
如果依赖的底层服务持续地失败,改方法依然会进行固定次数的尝试,并不能起到很好的保护作用。
158+
对结果是否符合预期,是否需要进行重试依赖于异常。
159+
无法针对异常进行精细化的控制,如只针部分异常进行重试。
160+
可进行细粒度控制的重试:
161+
推荐使用 resilience4j-retr y 或则spring-retry 等库来进行组合
162+
163+
和断路器结合
164+
虽然可以比较好的控制重试策略,但是对于下游资源持续性的失败,依然没有很好的解决。当持续的失败时,对下游也会造成持续性的压力。
165+
常见的有 Hystrix 或 resilience4
166+
```
148167

149168
## linux查看哪个进程占用磁盘IO
169+
$vmstat 2
170+
执行vmstat命令,可以看到r值和b值较高,r 表示运行和等待cpu时间片的进程数,如果长期大于1,说明cpu不足,需要增加cpu。
171+
b 表示在等待资源的进程数,比如正在等待I/O、或者内存交换等。
172+
173+
### [IO等待导致性能下降](https://serverfault.com/questions/363355/io-wait-causing-so-much-slowdown-ext4-jdb2-at-99-io-during-mysql-commit)
150174
$ iotop -oP
151175
命令的含义:只显示有I/O行为的进程
152176

153-
$ iostat -dtxNm 2 10
177+
$ iostat -dtxNm 2 10
154178
查看磁盘io状况
155179

156-
$ dstat -r -l -t --top-io
180+
$ dstat -r -l -t --top-io
157181
用dstat命令看下io前几名的进程
158182

159-
$ dstat --top-bio-adv
183+
$ dstat --top-bio-adv
160184
找到那个进程占用IO最多
161185

162186
$ pidstat -d 1
163187
命令的含义:展示I/O统计,每秒更新一次
164188

165-
网络上的人提供了如下三种解决方案:
189+
### [Linux 挂载管理(mount)](https://www.cnblogs.com/chenmh/p/5097530.html)
190+
$ vim /etc/fstab
191+
mount挂载分区在系统重启之后需要重新挂载,修改/etc/fstab文件可使挂载永久生效
192+
193+
$ mount -t ext4 /dev/sdb1 /sdb1
194+
-t:指定文件系统类型
195+
196+
$ mount -o remount,noatime,data=writeback,barrier=0,nobh /dev/sdb
197+
remount:重新挂载文件系统。
198+
noatime:每次访问文件时不更新文件的访问时间。
199+
async:适用缓存,默认方式。
200+
201+
$ fuser -m /dev/sdb
202+
查看文件系统占用的进程
166203

204+
$ lsof /dev/sdb
205+
查看正在被使用的文件,losf命令是list open file的缩写
206+
207+
208+
网络上的人提供了如下三种解决方案:
167209
升级内核
168210
更改commit的次数, "mount -o remount,commit=60 /dev/sda1"
169211
关闭文件系统日志功能: 操作类似于dumpe2fs 获取文件系统属性信息, tune2fs 调整文件系统属性, 之后e2fsck 检查文件系统(几乎大部分都不推荐这样做)
@@ -183,6 +225,18 @@ PUT _all/_settings
183225
"index.refresh_interval" : "60s"
184226
}
185227

228+
PUT /_cluster/settings
229+
{
230+
"transient": {
231+
"cluster": {
232+
"routing": {
233+
"allocation.disk.watermark.high": "95%",
234+
"allocation.disk.watermark.low": "90%"
235+
}
236+
}
237+
}
238+
}
239+
186240
PUT _cluster/settings
187241
{
188242
"transient" : {
@@ -225,3 +279,38 @@ nohup /home/op/KafkaOffsetMonitor/kafka-monitor-start.sh &
225279

226280
jcmd 239312 GC.class_stats|awk '{print$13}'|sed 's/\(.*\)\.\(.*\)/\1/g'|sort |uniq -c|sort -nrk1
227281

282+
"logging_ad-guard_*",
283+
"logging_usercenter-profile-api_*",
284+
"logging_bigdata-aibo-query_*",
285+
"logging_ad-shield-cloud_*",
286+
"logging_bigdata-queryplatform_*",
287+
"logging_xueqiu-sms_*",
288+
"logging_ad-merger-cloud_*",
289+
"logging_bigdata-push_*",
290+
"logging_ad-auth_*",
291+
"logging_bigdata-label-platform_*",
292+
"logging_ad-business_*",
293+
"logging_usercenter-profile-server_*",
294+
"logging_usercenter-passport-api_*",
295+
"logging_snowflake-nebula_*",
296+
"logging_xueqiu-analysis_*",
297+
"logging_xueqiu-push-client_*",
298+
"logging_recommend-stock-page-consumer_*",
299+
"logging_ad-gateway_*",
300+
"logging_recommend-user-profile-consumer_*",
301+
"logging_status-frame-thread_*",
302+
"logging_usercenter-relation-server_*",
303+
"logging_snowcrawler_*",
304+
"logging_live-crm_*",
305+
"logging_ad-ssp-cloud_*",
306+
"logging_cube-thread_*",
307+
"logging_search-query_*",
308+
"logging_recommend-user-profile_*",
309+
"logging_cube-server_*",
310+
"logging_usercenter-extend-server_*",
311+
"logging_bigdata-authority-platform_*",
312+
"logging_ad-report_*",
313+
"logging_status-cds_*",
314+
"logging_message-group_*",
315+
"logging_ad-resource_*",
316+
"logging_ad-oplog_*"

0 commit comments

Comments
 (0)