多个POST请求吃RES内存(htop)

时间:2015-05-20 11:39:12

标签: java ubuntu memory rabbitmq httpurlconnection

我会尽量简短。我有一个程序:

  1. 使用来自RabbitMQ服务器的JSON字符串消息。
  2. 提取重要字段并将它们放入另一个JSON(不同结构)中。我正在使用Jackson解析器的POJO模型。
  3. 通过HTTP POST请求将它们发送到服务器。使用HttpUrlConnection(每个消息一个连接)和DataOutputStream#write(byte [])。
  4. 我有3个消费者(3个线程,每个消耗一个不同的队列)执行这3个步骤,它工作正常。但是,我收到的邮件数量非常大(一小时内有500封邮件),似乎这些请求缓慢但逐渐地占用了常驻内存。堆是稳定的,并由垃圾收集器定期清理。

    问题可能在:

    1. 我的RabbitMQ消费者:他们被限制为1条消息(qos = 1),直到它得到承认,所以我不认为这个问题就在这里。
    2. HttpURLConnection对象:我认为这是问题,因为如果我们只消耗数据,那么内存就是稳定的。
    3. 使用分析器我可以看到堆增长直到达到峰值,然后垃圾收集器清理它(参见附图):

      enter image description here

      如何控制使用的驻留内存?有什么办法可以控制大量的POST请求吗?

0 个答案:

没有答案