Проблема нехватки памяти - Mongo убивается, как только я запускаю приложение Java

У меня есть автономное приложение, в котором я пытаюсь создать 5 потоков для каждого потока. Я создаю mongoclient и сохраняю детали в MongoDB, а затем закрываю mongoclient.

Когда я запускаю свою службу mongo, она работает, но как только я запускаю свое java-приложение, через некоторое время моя служба mongo перестает работать, и я вижу приведенную ниже ошибку в системном журнале.

Out of memory: Kill process 12715 (mongod) score 433 or sacrifice child\\
kernel: [2946780.340246] Killed process 12715 (mongod) total-vm:6646800kB, anon-rss:6411432kB, file-rss:0kB

Я использую сервер Linux, у него 10 ГБ ОЗУ. Насколько мне известно, мы можем выполнять тысячи транзакций в MongoDB. И прежде чем я начну, я вижу свободную память, через некоторое время я получаю указанную выше ошибку.

Не уверен, что именно делать, нужно ли нам что-то настраивать на сервере Linux для обработки нескольких запросов mongo? или мне нужно где-нибудь увеличить лимит службы mongo?

Кто-нибудь может предложить мне это?

Заранее спасибо.

o / p of free -m до и после выполнения моей java следующие приложения:

До:

             total       used       free     shared    buffers     cached
Mem:         14032       7646       6385         54          4        153
-/+ buffers/cache:       7489       6542
Swap:            0          0          0

После:

             total       used       free     shared    buffers     cached
Mem:         14032      13845        186         54        106       4131
-/+ buffers/cache:       9607       4425
Swap:            0          0          0

Ниже приведены детали из mongod.conf

# mongod.conf

storage:
  dbPath: /xxx/xxx 
  journal:
    enabled: true

systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

net:
  port: 27017    
  bindIp: 127.0.0.1,xx.xx.xx.xx

processManagement:
   fork: true
security:
  authorization: enabled

Вывод cat / proc / / limits :

cat /proc/17694/limits
Limit                     Soft Limit           Hard Limit           Units
Max cpu time              unlimited            unlimited            seconds
Max file size             unlimited            unlimited            bytes
Max data size             unlimited            unlimited            bytes
Max stack size            8388608              unlimited            bytes
Max core file size        0                    unlimited            bytes
Max resident set          unlimited            unlimited            bytes
Max processes             112088               112088               processes
Max open files            1024                 4096                 files
Max locked memory         65536                65536                bytes
Max address space         unlimited            unlimited            bytes
Max file locks            unlimited            unlimited            locks
Max pending signals       112088               112088               signals
Max msgqueue size         819200               819200               bytes
Max nice priority         0                    0
Max realtime priority     0                    0
Max realtime timeout      unlimited            unlimited            us

ps xua | grep java results :::

  root     17142  0.4  3.1 5645648 453180 pts/0  Sl   Sep04   2:27 java -d64 -Xms1024m -Xmx2048m -server -cp bin:lib/* javaclassname -resourceDir /xxx/bin -dataDir /xxx/data
   root     17491 22.1 11.2 5653432 1610716 pts/0 Sl   Sep04 115:14 java -d64 -Xms1024m -Xmx2048m -server -cp bin:lib_new/* javaclassname -resourceDir /xxx/bin -dataDir /xxx/data -outConfigPath /xxx/xxx.xml -outCatBrandPath /xxx/xxx.xml -outCatAndSunCatPath /xxx/xxx.xml
   xxx      19223  3.5 22.1 20396560 3184668 ?    Sl   Aug28 398:11 /usr/bin/java -Xms2g -Xmx2g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -server -Xss1m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djna.nosys=true -Djdk.io.permissionsUseCanonicalPath=true -Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dio.netty.recycler.maxCapacityPerThread=0 -Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -Dlog4j.skipJansi=true -XX:+HeapDumpOnOutOfMemoryError -Des.path.home=/elasticsearch-5.4.0 -cp /elasticsearch-5.4.0/lib/* org.elasticsearch.bootstrap.Elasticsearch
   root     21617  2.2 21.7 18549248 3124416 ?    Sl   Aug28 247:34 /usr/bin/java -Djava.util.logging.config.file=/opt/apache-tomcat-8.0.30/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/opt/apache-tomcat-8.0.30/endorsed -classpath /opt/apache-tomcat-8.0.30/bin/bootstrap.jar:/opt/apache-tomcat-8.0.30/bin/tomcat-juli.jar -Dcatalina.base=/opt/apache-tomcat-8.0.30 -Dcatalina.home=/opt/apache-tomcat-8.0.30 -Djava.io.tmpdir=/opt/apache-tomcat-8.0.30/temp org.apache.catalina.startup.Bootstrap start

swapon -s вывод: Есть идеи, как я могу это остановить? 198.xxx - - [04 / сен / 2017: 17: 12: 11 +0100] "GET / HTTP / 1.0" 302 403 "google.com/results?search_query=i7j0O" "Mozilla / 5.0 (...

Я использую ddos ​​с несколькими поисковыми системами Есть идеи, как мне это остановить?

198.x.x.x - - [04/Sep/2017:17:12:11 +0100] "GET / HTTP/1.0" 302 403 "google.com/results?search_query=i7j0O" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"
198.x.x.x - - [04/Sep/2017:17:12:11 +0100] "GET / HTTP/1.0" 302 403 "google.com/results?search_query=eFvOwVu5U" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"
198.x.x.x - - [04/Sep/2017:17:12:11 +0100] "GET / HTTP/1.0" 302 461 "bing.com/search?q=j1rLD" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"
198.x.x.x - - [04/Sep/2017:17:12:11 +0100] "GET / HTTP/1.0" 302 403 "youtube.com/results?search_query=1kLPIe7" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"
198.x.x.x - - [04/Sep/2017:17:12:11 +0100] "GET / HTTP/1.0" 302 403 "youtube.com/results?search_query=WBQbiA" "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0"
198.x.x.x - - [04/Sep/2017:17:12:11 +0100] "GET / HTTP/1.0" 302 403 "yahoo.com/results?search_query=qCzCMam" "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0"

Я не могу заблокировать этот IP-адрес 198.xxx, потому что это мой прокси.

-3
задан 4 September 2017 в 22:42
1 ответ

Вам следует

  1. Настроить прокси, чтобы передать реальный IP-адрес и заставить внутренний сервер использовать вместо него реальный IP.

Вы не указали, как создается ваш прокси, но поскольку он передает запрос, он также должен передавать реальный IP. Тогда у вас также есть право запретить IP. Для большей эффективности вы должны блокировать прокси.

  1. Запрещать рефереры на основе регулярного выражения.

Атаки, которые вы получаете, имеют явно не настоящие рефереры, но очень последовательные. Вы можете настроить регулярное выражение, чтобы запретить эти запросы, соответствующие такой строке реферера.

Например, ^ google \ .com \ / results \? Search_query \ = \ w {2,10} $ для запроса Google и еще несколько для остальных.

2
ответ дан 5 December 2019 в 21:55

Теги

Похожие вопросы