如何对request.log进行性能分析
相关版本:这个信息属于Artifactory版本4.倍通过6.倍
字段显示在Artifactory的request.log提供对你非常有用的信息,当你试图确定给定的是什么,何时,何地,为什么和如何性能问题。日志格式非常强大,因为它能够测量Artifactory处理请求所需的时间,而不考虑网络情况。这可以排除网络作为性能问题的一个因素。
以下是标准request.log条目的格式:| 2632 | 20140508154145 |请求86:12:14:192管理| | | / jcenter / org/iostreams/iostreams/0.2/iostreams-0.2.jar HTTP / 1.1 | 200 | 8296 |
日期和时间戳 |
给定请求完成并输入到日志文件的日期和时间。格式将显示为[YYYYMMDDHHMMSS] |
请求时间 |
处理请求所需的时间(以毫秒为单位) |
请求类型 |
DOWNLOAD用于下载请求 |
知识产权 |
请求用户的IP地址 |
用户名 |
请求用户的用户名或 |
请求方法 |
HTTP请求方法(如GET、PUT等) |
请求的资源路径 |
请求资源的相对路径 |
协议版本 |
HTTP协议版本 |
响应代码 |
HTTP响应代码 |
请求或响应的大小(字节) |
如果请求方法为GET:响应的大小 |
分析性能问题最重要的字段是请求时间和响应大小。可以使用一些bash终端命令来搜索文件来演示这一点。
检查性能问题
当涉及到性能问题时,需要分析的最重要的领域是请求时间而且请求的大小或响应.这可以通过使用一些bash终端命令搜索请求日志文件来演示,如下所示。
让我们来看看一个非常常见的问题:码头工人登录超时。如果你遇到了这个问题,你肯定想弄清楚为什么会发生这种情况。您可能知道docker登录过程通过使用Artifactory API请求一个令牌。你可以得到精确的请求格式通过对Artifactory模拟docker登录请求:
GET / api /码头工人/ docker-repo / v2 /令牌
Curl -u admin:密码http://artifactory.com/artifactory/api/docker-local/v2/token
现在,用一个URL寻找,一套grep可以对搜索进行精心设计解析您请求日志:
[识别何时“docker login”请求超时]
在grep中,一个通配符是句号。
grep“|…|REQUEST" request.log | grep "api/docker" | grep "v2/token"#替代awk搜索
awk 'BEGIN {FS="|"} ($2 > requestTime) && ($6 == "GET") {print $1 " response_time: " $2 " " $7}' requestTime=10000 request.log
#示例长时间运行的docker登录
20190726113810| 39070[39秒]|REQUEST| 127.0.0.1 |Jenkins-LDAP|GET|/api/docker/docker-virtual/v2/token|HTTP/1.1|200|0
#增加额外的点搜索100 - 999秒请求
20190726114126 | 126000[126秒]|REQUEST| 127.0.0.1 |Jenkins-LDAP|GET|/api/docker/docker-virtual/v2/token|HTTP/1.1|200|0
该技术允许您查看是否是Artifactory的原因缓慢的请求.您可能有理由担心,例如,如果给定的长时间运行的请求是针对一个小文件的。另一方面,如果该文件是第一次从远程端点提取,那么在该文件被缓存后,请求执行的时间可能会比后续的情况要长:[2.2秒流式第一次53 KB文件-从远程存储库提取]
2218 | 20181228204422 | | 127.0.0.1请求管理| | | / api / npm npm / sshpk /——/ sshpk-1.16.0.tgz HTTP / 1.1 | 200 | 53405 |
681 | 20190814003406 | | 127.0.0.1请求管理| | | / api / npm npm / sshpk /——/ sshpk-1.16.0.tgz HTTP / 1.1 | 200 | 53405 |当然,有一些限制对于这种方法。例如,缓慢的下载或上传可能需要更长的时间来执行,因为您的客户端需要大量的数据流。实际上,如果遇到传输大量二进制数据的长时间运行的请求,执行问题的时间长度很可能会被记为预期行为:[137毫秒上传一个2.5 MB的文件]为了解决这些问题,最好考虑一下Artifactory如何为请求提供服务,以确定瓶颈。下图显示了Artifactory用于处理二进制文件下载的标准流程:
20181204003658|137[毫秒]|REQUEST|127.0.0.1|admin|PUT|/libs-snapshot-local/org/jfrog/test/multi3/3.7-SNAPSHOT/multi3-3.7-SNAPSHOT.war;build.timestamp=1543883800178;build.name= main -pipeline;build.number=23|HTTP/1.1|201|2533340 [2.5 MB]
2.Artifactory进行身份验证用户通过其嵌入式Access服务器(在Access数据库中搜索用户)
3.Artifactory查找文件校验和在数据库中
4.Artifactory获取文件从文件系统
5.Artifactory文件流对于用户
6.请求关闭,请求时间停止, request.log条目为记录
可以对链中的每个环节进行测试,以确定它是否是瓶颈。例如,您可以使用这个请求日志分析来消除步骤1和步骤5之前或之后的任何内容(然后它只在应用程序内部变慢)。
检查请求速率
如果Artifactory用了很多处理能力在美国,要想知道是什么原因导致如此高的使用率,一种方法是检查你的手机请求率.这可以通过分析Unix BASH终端中的日志来完成,并依赖于请求日志时间戳旁边的一组锚文本。要获得特定小时内发生的所有请求的计数,您可以查找以小时标记结束的请求日志时间戳:
#从2019-07-29上午09:00开始计数
>$ grep "2019072909" request*.log | wc -l .log
162848
>$ grep "2019072910" request*.log | wc -l .log
301432
>$ grep "2019072911" request*.log | wc -l .log
275613
>$ grep "2019072912" request*.log | wc -l .log
359222
patrick -mac:logs patrickr$ grep "2019072913" request*.log | wc -l .log
219759
返回的每个数字表示在该小时内服务的请求。当你想要的时候,这些数字对你很有帮助调整和缩放适合贵店特殊需要的手工制品。
信息如何为重载调整Artifactory是可用的在这里.
