我们有一个App Engine应用程序,可将许多较大文件写入Google Cloud
Store。这些文件是动态创建的CSV文件,因此我们将PythonStringIO.StringIO
用作缓冲区和csv.writer
写入该缓冲区的接口。
通常,我们的过程如下所示:
# imports as needed
# (gcs is the Google Cloud Store client)
buffer = StringIO.StringIO()
writer = csv.writer(buffer)
# ...
# write some rows
# ...
data = file_buffer.getdata()
filename = 'someFilename.csv'
try:
with gcs.open(filename, content_type='text/csv', mode='w') as file_stream:
file_stream.write(data)
file_stream.close()
except Exception, e:
# handle exception
finally:
file_buffer.close()
据我们了解,它们csv.writer
本身不需要关闭。而是,仅buffer
上述内容和file_stream
需要被关闭。
我们在deferred
由App Engine的任务队列调用的中运行上述过程。最终,在几次调用我们的任务后,我们得到以下错误:
总共为11个请求提供服务后,超出了128 MB的软私有内存限制和142 MB
显然,我们的应用程序中存在内存泄漏。但是,如果上面的代码是正确的(我们承认可能不是这种情况),那么我们唯一的其他想法是通过为我们的请求提供服务来保留大量内存(如错误消息所示)。
因此,我们想知道在执行期间App Engine是否保留某些实体deferred
。我们还应该注意,尽管有这些错误消息,我们的CSV最终还是成功写入了。
所描述的症状 不一定 表示应用程序内存泄漏。可能的替代解释包括:
我们有一个应用程序引擎应用程序,它将许多相对较大的文件写入谷歌云商店。这些文件是动态创建的CSV,因此我们使用Python的作为写入该缓冲区的接口。 通常,我们的流程如下所示: 据我们所知,不需要自己关闭。相反,只需要关闭上面的和。 我们在appengine的任务队列调用的
我试图在我们非常小且简单的Spring Boot应用程序中跟踪并确定内存泄漏的根本原因。 它使用以下内容:-Spring Boot 2.2.4-azure servicebus jms Spring Boot starter 2.2.1-MSSQL 功能:该应用程序只发送Azure ServiceBus队列,存储数据并将数据发送到其他目的地。这是一个小应用程序,所以它很容易启动64兆的内存,尽管我
问题内容: 这是我几个月来一直试图寻找的问题。我有一个运行的Java应用程序,它处理xml提要并将结果存储在数据库中。存在间歇性的资源问题,很难追踪。 背景: 在生产包装盒上(问题最明显的地方),我对包装盒的访问不是特别好,并且无法使Jprofiler运行。那个盒子是一个运行centos5.2,tomcat6和java 1.6.0.11的64位四核8GB计算机。它以这些java-opts开头 技术
我有内存泄漏,我知道它在哪里(我想是这样的),但我不知道为什么会发生。负载测试以下endpoint(使用服务器)时发生内存泄漏: 我非常肯定对象没有被(垃圾回收器)释放。在每一个请求中,应用程序使用的内存都在增长。我做了一些附加测试: 因此,在每个请求中,我都将big object分配给对象作为其属性。我观察到,有了这个附加属性,内存增长得快得多。在60秒内每完成1000个请求,内存会增加100M
问题内容: 我看到了这个Python问题:推迟了AppEngine:跟踪内存泄漏 …同样,我遇到了这个可怕的错误: 总共为384个请求提供服务后,超出了128 MB的软私有内存限制 … 处理此请求后,发现处理此请求的进程使用了过多的内存并被终止。这很可能导致新流程用于您的应用程序的下一个请求。如果您经常看到此消息,则可能是应用程序内存泄漏。 根据另一个问题,可能是“实例类”太小而无法运行此应用
我们的应用程序中有一个JavaMicorservice,它连接到Postgres以及Phoenix。我们正在使用Spring Boot 2. x。 问题是,我们正在为应用程序执行大约8小时的耐久性测试,我们可以观察到使用的堆在不断增加,尽管我们对VM参数使用了建议,看起来像是内存泄漏。我们分析了堆转储,但根本原因对我们来说并不明确,一些专家能否根据结果提供帮助? 我们实际使用的VM参数是: -XX