Poison


  • 首页

  • 归档

  • 标签

  • 搜索
close
Poison

com.sun.management.OperatingSystemMXBean.getSystemCpuLoad()

发表于 2022-02-18

我们发现在部分实例上采集的 CPU 使用率明显不正确,出问题时采集到的值总是高于实际值,进入实例通过 top 等命令确认 CPU 使用率并不高,且有时重启应用后采集的 CPU 使用率又会正常,再次重启后可能又不正常,其中一台单核 CPU 实例的 CPU 使用率不正常时的 Grafana 监控图表如下图所示:


阅读全文 »
Poison

Cache-Control: max-age

发表于 2022-02-07

一直以为 max-age 设置的值表示本地浏览器接收到响应后从当前时刻开始计算的可存活的时间,今天查了个问题,发现并不是。根据 RFC 中的描述,max-age 表示自源站服务器端生成响应后的最大生存时间,并不是自本地浏览器接收到响应后的最大生存时间。

A response’s age can be calculated in two entirely independent ways:

  1. now minus date_value, if the local clock is reasonably well synchronized to the origin server’s clock. If the result is negative, the result is replaced by zero.
  2. age_value, if all of the caches along the response path implement HTTP/1.1.

Given that we have two independent ways to compute the age of a response when it is received, we can combine these as corrected_received_age = max(now - date_value, age_value) and as long as we have either nearly synchronized clocks or all HTTP/1.1 paths, one gets a reliable (conservative) result.

同时发现对没有设置 Cache-Control 的资源,浏览器对部分资源进行了 If-Modified-Since 探测,而部分资源没有进行探测直接使用了本地缓存,查了下文档,原来是根据资源的 Last-Modified 距当前时间的差值来决定是否缓存一段时间,简单来说就是如果一个资源上次修改的时间已经很久了,那么我们可以认为在一定时间段内,该资源不会被修改,所以这时即使没有设置 Cache-Control,浏览器也会将该资源缓存一段时间。典型的缓存时间计算公式为 (current time - last modified time) / 10。

阅读全文 »
Poison

Methods Duplicated in Multiple Proxy Interfaces

发表于 2022-01-21

在之前的项目中,多数据源路由曾采用在接口上使用自定义注解指定数据源的方式实现。直到前几天,有同事反馈使用了自定义注解但是数据源切换没有生效,经过排查后,确认是多接口存在相同方法导致,简化后的部分代码如下,原 DAO 接口定义为:

1
2
3
4
5
public interface BizDao {

List<BizDO> queryPage();

}

而后同事新写了个 DAO 接口并继承了 BizDao,简化后的代码如下:

1
2
3
4
5
6
7
8
@DataSource(Database.ANALYTIC)
public interface BizAnalyticDao extends BizDao {

List<BizDO> queryList();

List<BizDO> queryPage();

}
阅读全文 »
Poison

HeapDumpAfterFullGC

发表于 2022-01-17

GC 日志:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
2022-01-17T13:39:14.399+0800: 920001.780: [GC pause (G1 Evacuation Pause) (young), 0.0109317 secs]
[Parallel Time: 9.7 ms, GC Workers: 2]
[GC Worker Start (ms): Min: 920001780.8, Avg: 920001781.0, Max: 920001781.3, Diff: 0.5]
[Ext Root Scanning (ms): Min: 7.4, Avg: 7.9, Max: 8.4, Diff: 1.0, Sum: 15.8]
[Update RS (ms): Min: 0.8, Avg: 0.9, Max: 1.0, Diff: 0.2, Sum: 1.8]
[Processed Buffers: Min: 4, Avg: 4.5, Max: 5, Diff: 1, Sum: 9]
[Scan RS (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
[Code Root Scanning (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
[Object Copy (ms): Min: 0.2, Avg: 0.4, Max: 0.7, Diff: 0.5, Sum: 0.8]
[Termination (ms): Min: 0.0, Avg: 0.1, Max: 0.1, Diff: 0.1, Sum: 0.1]
[Termination Attempts: Min: 1, Avg: 1.0, Max: 1, Diff: 0, Sum: 2]
[GC Worker Other (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
[GC Worker Total (ms): Min: 9.1, Avg: 9.4, Max: 9.6, Diff: 0.5, Sum: 18.7]
[GC Worker End (ms): Min: 920001790.4, Avg: 920001790.4, Max: 920001790.4, Diff: 0.0]
[Code Root Fixup: 0.1 ms]
[Code Root Purge: 0.0 ms]
[Clear CT: 0.1 ms]
[Other: 1.1 ms]
[Choose CSet: 0.0 ms]
[Ref Proc: 0.3 ms]
[Ref Enq: 0.0 ms]
[Redirty Cards: 0.1 ms]
[Humongous Register: 0.2 ms]
[Humongous Reclaim: 0.1 ms]
[Free CSet: 0.1 ms]
[Eden: 0.0B(102.0M)->0.0B(102.0M) Survivors: 0.0B->0.0B Heap: 2037.9M(2048.0M)->2037.9M(2048.0M)]
[Times: user=0.02 sys=0.00, real=0.01 secs]
2022-01-17T13:39:14.416+0800: 920001.797: [Full GC (Allocation Failure) 2037M->1195M(2048M), 3.2218960 secs]
[Eden: 0.0B(102.0M)->0.0B(605.0M) Survivors: 0.0B->0.0B Heap: 2037.9M(2048.0M)->1195.7M(2048.0M)], [Metaspace: 204152K->203357K(1247232K)]
[Times: user=3.98 sys=0.00, real=3.22 secs]
2022-01-17T13:39:17.638+0800: 920005.020: [GC concurrent-mark-abort]
2022-01-17T13:39:18.323+0800: 920005.704: [GC pause (G1 Humongous Allocation) (young) (initial-mark), 0.1329421 secs]
[Parallel Time: 128.8 ms, GC Workers: 2]
[GC Worker Start (ms): Min: 920005705.4, Avg: 920005705.4, Max: 920005705.4, Diff: 0.0]
[Ext Root Scanning (ms): Min: 8.6, Avg: 8.6, Max: 8.6, Diff: 0.0, Sum: 17.2]
[Update RS (ms): Min: 47.3, Avg: 47.4, Max: 47.4, Diff: 0.1, Sum: 94.8]
[Processed Buffers: Min: 227, Avg: 239.5, Max: 252, Diff: 25, Sum: 479]
[Scan RS (ms): Min: 0.1, Avg: 0.1, Max: 0.1, Diff: 0.0, Sum: 0.2]
[Code Root Scanning (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
[Object Copy (ms): Min: 71.8, Avg: 71.8, Max: 71.8, Diff: 0.1, Sum: 143.6]
[Termination (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
[Termination Attempts: Min: 1, Avg: 1.0, Max: 1, Diff: 0, Sum: 2]
[GC Worker Other (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.1]
[GC Worker Total (ms): Min: 127.9, Avg: 127.9, Max: 127.9, Diff: 0.0, Sum: 255.8]
[GC Worker End (ms): Min: 920005833.3, Avg: 920005833.3, Max: 920005833.3, Diff: 0.0]
[Code Root Fixup: 0.0 ms]
[Code Root Purge: 0.0 ms]
[Clear CT: 0.2 ms]
[Other: 3.8 ms]
[Choose CSet: 0.0 ms]
[Ref Proc: 1.2 ms]
[Ref Enq: 0.0 ms]
[Redirty Cards: 0.4 ms]
[Humongous Register: 0.0 ms]
[Humongous Reclaim: 0.1 ms]
[Free CSet: 0.5 ms]
[Eden: 263.0M(605.0M)->0.0B(522.0M) Survivors: 0.0B->43.0M Heap: 1458.7M(2048.0M)->1238.3M(2048.0M)]
[Times: user=0.26 sys=0.00, real=0.14 secs]
阅读全文 »
Poison

OperatingSystemMXBean

发表于 2022-01-11

OperatingSystemMXBean 中的 getFreePhysicalMemorySize() 方法返回的值为不含缓存的可用物理内存,该指标不能很好的反应 Linux 中实际可用的物理内存,因为 Linux 会尽量将物理内存用作 page cache,该指标返回的值(等价于 /proc/meminfo 的 MemFree)在长期运行的机器上通常接近 0,远小于实际可用的物理内存,我们根据 /proc/meminfo 中返回的数据采集出类似 free 命令中 available 列的值以便更好的监测可用物理内存。

阅读全文 »
1…8910…28

138 日志
126 标签
GitHub LeetCode
© 2026 Poison 蜀ICP备16000644号
由 Hexo 强力驱动
主题 - NexT.Mist