Memory management 测量每个请求在GWAN中的脚本内存使用情况

Memory management 测量每个请求在GWAN中的脚本内存使用情况,memory-management,monitoring,g-wan,Memory Management,Monitoring,G Wan,如何测量gwan应用程序上的内存使用情况(每个请求)? 有关/csp脚本和/handlers脚本所消耗的内存使用情况。您可以使用服务器报告功能 检查一个例子。< P>测量G-WAN脚本(处理程序或servlet)所消耗的内存,您必须考虑两件事: 代码大小(请参阅将其与MD5校验和一起转储的gwan.log文件) 数据大小(取决于代码,因此只能在运行时报告) 正如Paulo所建议的,您可以检查代码中每个malloc()/calloc()/strdup()等的功能,但您将丢失G-WAN、系统或第三方

如何测量gwan应用程序上的内存使用情况(每个请求)?
有关/csp脚本和/handlers脚本所消耗的内存使用情况。

您可以使用服务器报告功能


检查一个例子。

< P>测量G-WAN脚本(处理程序或servlet)所消耗的内存,您必须考虑两件事:

  • 代码大小(请参阅将其与MD5校验和一起转储的
    gwan.log
    文件)
  • 数据大小(取决于代码,因此只能在运行时报告)
  • 正如Paulo所建议的,您可以检查代码中每个malloc()/calloc()/strdup()等的功能,但您将丢失G-WAN、系统或第三方库调用所使用的内存


    工作线程堆栈在需要时也会动态增长。。。因此,除非您知道自己在做什么,否则没有明显的方法可以精确检查任何给定脚本所使用的内存量。

    我要问的是我们制作的脚本的内存使用情况,而不是GWA自身的内存使用情况。这实际上取决于您使用了什么以及有多少并行连接。当GWAN启动时,您可以在日志中获取每个主机/虚拟主机的信息,但是没有“简单”的方法(如果不是不可能的话)获取servlet基础上的信息。当然,您可以将servlet单独隔离在一台主机中,并从GWAN日志中获取它。但这只是servlet占用的内存。然后,您可以调用Linux操作系统来获取进程内存,在servlet开始时,在所有malloc之后再次询问,然后在开始释放之前计算差异。好的,谢谢您的回复。如果您运行ab测试,请查看?report.c,RAM将增加,并且不会恢复。我错了吗?我相信当它被垃圾收集后会回来的。但我不确定是否需要调用gc_*函数。检查内存是否首先释放到应用程序内存池而不是系统,并且(更多)在可能的情况下重新初始化内存池(小活动),通常每天一次。当服务器处于负载状态时,向系统释放内存是没有意义的。