我有一个HAProxy将请求转发到Artifactory。有时我会从客户端超时,例如请求一些文件或只是执行docker login
。
我在HAProxy中查看日志,发现了下一个:
Jul 13 06:38:49 artifactory.node haproxy[6288]: xxxx:xxxx [13/Jul/2018:06:38:18.730] front~ back/artifactory01 0/0/0/30440/30440 200 1757 - - ---- 1/1/1/1/0 0/0 "GET /yum/repodata/repomd.xml HTTP/1.1"
值0/0/0/30440/30440
表示
Tq ’/’ Tw ’/’ Tc ’/’ Tr ’/’ Tt*
0 Tq: total time in milliseconds spent waiting for the client to send a full HTTP request, not counting data
0 Tw: total time in milliseconds spent waiting in the various queues
0 Tc: total time in milliseconds spent waiting for the connection to establish to the final server, including retries
30440 Tr: total time in milliseconds spent waiting for the server to send a full HTTP response, not counting data
30440 Tt: total time in milliseconds elapsed between the accept and the last close. It covers all possible processings
响应时间为30440秒Artifactory。
我在读《系统要求》,https://www.jfrog.com/confluence/display/RTF/System+要求
我的实例增加了16GB,在JVM堆中,我增加到8GB。
export JAVA_OPTIONS="-server -Xms8g -Xmx8g -Xss256k -XX:+UseG1GC -XX:OnOutOfMemoryError="kill -9 %p""
但是,同样的情况发生了,随机地,我有这个超时,并在HAProxy中检查日志,我有来自Artifactory的大时间响应。
要进一步解决此问题,您可以在Artifactory的request.log中搜索请求本身。如果你确实可以看到,由于某种原因,这个特定的请求花了Artifactory很长时间来处理,你可以开始看看当时是否存在CPU峰值,或者内存问题。
考虑到每个请求都需要Artifactory检查数据库中的数据,因此问题可能存在,或者存在于Artifactory和数据库之间的连接中。因此,还要检查数据库服务器的CPU和内存(以防使用外部数据库(。