SRE重案调查组 第四集 | JVM元数据区的内存泄漏之谜

这是本人发表在 eBay 微信公众号 eBay技术荟 上的 一系列文章, 原文地址如下. 编辑非常给力, 请查看原文, 这里只是供搜索引擎访问.
https://mp.weixin.qq.com/s/h8ayDuk7SSQ-0-jNmGmydw

如果原文由于某种原因不存在了, 请查看这个pdf 版本: SRE重案调查组 第四集 | JVM元数据区的内存泄漏之谜.pdf

导读

从Java 8开始,元数据区(Metaspace)被引入,替换永久代 (Permanent Generation),用以保存JVM用到的类的元数据、字节码及编译后的代码。这两者最大的区别是元数据区在原生内存(Native Memory)申请一块区域来保存这些数据。本文将分享一个SRE处理的与元数据区相关,且发生在生产环境的真实案例。

- 阅读剩余部分 -

SRE重案调查组 第三集 | 探秘HTTP异步请求的“潘多拉魔盒”

这是本人发表在 eBay 微信公众号 eBay技术荟 上的 一系列文章, 原文地址如下. 编辑非常给力, 请查看原文, 这里只是供搜索引擎访问.
https://mp.weixin.qq.com/s/kVA4vrrk-UbttChu2zhaFA

如果原文由于某种原因不存在了, 请查看这个pdf 版本: SRE重案调查组 第三集 _ 探秘HTTP异步请求的“潘多拉魔盒”.pdf

导读

HttpAsyncClient 是基于Httpcore NIO 和Httpclient基础上做的进一步封装,主要利用异步回调方式,能够高效处理HTTP请求。可一旦使用不当,就会产生问题。本文将跟随eBay SRE部门人员视角,探索HTTP 异步请求导致的系统性能问题。

- 阅读剩余部分 -

SRE重案调查组 第二集 | 挖掘应用处理变慢的“真相”

这是本人发表在 eBay 微信公众号 eBay技术荟 上的 一系列文章, 原文地址如下. 编辑非常给力, 请查看原文, 这里只是供搜索引擎访问.
https://mp.weixin.qq.com/s/Sh7ddc-3mGXWCGppi50EHg

如果原文由于某种原因不存在了, 请查看这个pdf 版本:SRE重案调查组 第二集 _ 挖掘应用处理变慢的“真相”.pdf

导读

eBay SRE部门经常处理生产环境中各种各样的疑难杂症,此次探究的是应用处理变慢问题。从监控系统入手,到找出根本原因是锁形成的顺序队列,不仅完美解决该问题,还为本部门积累了一笔宝贵的经验。

- 阅读剩余部分 -

常见的压缩/解压 jar 文件

只是为了下次使用直接 copy:

解压 jar 文件:

jar xvf xxx.jar 
unzip xxx.jar -d ./directoryToExtractTo

//使用 jar 命令只能解压到当前目录

压缩为 jar 文件:

jar cvf xxx.jar .

如果是使用 Spring boot big jar 的方式, 要制定 manifest 文件

jar cfm xxx.jar Manifest.txt MyPackage/*.class

more info: https://docs.oracle.com/javase/tutorial/deployment/jar/appman.html

HTTP 2 的特性

从 HTTP 2 in action 这本书看的, 发现这个网站总结的不错: https://tools.keycdn.com/http2-test, 就摘抄过来了. 顺便测试了一下 (20191104), taobao, ebay 支持 Http2, jd 和 baidu 主页都不支持 HTTP2

  1. HTTP/2 is binary, instead of textual.
  2. It is fully multiplexed, sending multiple requests in parallel over a single TCP connection.
  3. It uses header compression HPACK to reduce overhead.
  4. It allows servers to “push” responses proactively into client caches instead of waiting for a new request for each resource
  5. It uses the new ALPN extension which allows for faster-encrypted connections since the application protocol is determined during the initial connection.
  6. It reduces additional round trip times (RTT), making your website load faster without any optimization.
  7. Domain sharding and asset concatenation is no longer needed with HTTP/2.
  8. Flow control
  9. Stream prioritization

如何判断一个网站是不是支持 HTTP2? 使用最新的 curl 命令:

LM-SHC-16507776:tmp xiatian$ curl -vvv -s  --http2 https://www.jd.com:443/ 2>&1 | grep ALPN
* ALPN, offering h2
* ALPN, offering http/1.1
* ALPN, server accepted to use http/1.1
LM-SHC-16507776:tmp xiatian$ curl -vvv -s  --http2 https://www.ebay.com:443/ 2>&1 | grep ALPN
* ALPN, offering h2
* ALPN, offering http/1.1
* ALPN, server accepted to use h2

上面的输出中 baidu 首页不支持, ebay 首页支持.


从下面这个问答看:
在 Chrome 里面, 对于 HTTP 2 同一个 origin 不同的 tab 之间共享一个 tcp 连接.
对于 HTTP 1.1:

  1. HTTP/1.1 sockets are stored in a pool when they are not active. A request from any tab may end up using any socket in the pool;
  2. Incognito tabs use their own independent socket pool (All incognito tabs for a profile share just one socket pool, though);
  3. Isolated apps use their own socket pools.
  4. Different profiles and guest mode use their own socket pools.
  5. Global requests not tied to a profile use their own socket pool;

https://stackoverflow.com/questions/51535819/in-http-1-1-are-connections-shared-across-multiple-chrome-tabs-to-the-same-origi
https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/S3TEvmRWcNE