Проблема с памятью в App Engine и Firestore - PullRequest
0 голосов
/ 10 апреля 2020

Я разрабатываю MS с Kotlin и Micronaut, которые обращаются к базе данных Firestore. Когда я запускаю эту MS локально, я могу заставить ее работать с 128M, потому что это очень просто - просто читать и записывать данные в Firestore, а не большие объемы данных, действительно небольшие данные, как это:

{
    "project": "DUMMY",
    "columns": [
        {
            "name": "TODO",
            "taskStatus": "TODO"
        },
        {
            "name": "IN_PROGRESS",
            "taskStatus": "IN_PROGRESS"
        },
        {
            "name": "DONE",
            "taskStatus": "DONE"
        }
    ],
    "tasks": {}
}

Я Выполнение этого в App Engine Standard в экземпляре F1 (256 МБ 600 МГц) с этими свойствами в моем app.yaml

runtime: java11
instance_class: F1 # 256 MB     600 MHz
entrypoint: java -Xmx200m -jar MY_JAR.jar
service: data-connector
env_variables:
  JAVA_TOOL_OPTIONS: "-Xmx230m"
  GAE_MEMORY_MB: 128M

automatic_scaling:
  max_instances: 1
  max_idle_instances: 1

Я знаю все, что свойства для обработки памяти не являются необходимыми, но я отчаянно пытался сделать эту работу и просто попробовал много решений, потому что мое первое сообщение об ошибке было:

Exceeded soft memory limit of 256 MB with 263 MB after servicing 1 requests total. Consider setting a larger instance class in app.yaml.

Ошибка ниже не исправлена ​​со свойствами в app.yaml, но теперь каждый раз я делаю вызов для возврата JSON Я получаю эту ошибку

2020-04-10 12:09:15.953 CEST
While handling this request, the process that handled this request was found to be using too much memory and was terminated. This is likely to cause a new process to be used for the next request to your application. If you see this message frequently, you may have a memory leak in your application or may be using an instance with insufficient memory. Consider setting a larger instance class in app.yaml.

Она всегда длится дольше в первом запросе, я думаю, из-за некоторой конфигурации Firestore, но дело в том, что я не могу заставить это работать, всегда получая ту же ошибку .

У вас есть идеи, что я могу делать неправильно или что мне нужно, чтобы это исправить?

1 Ответ

1 голос
/ 10 апреля 2020

TL; DR. Проблема была в том, что я пытался использовать очень маленький экземпляр для простого приложения, но даже при этом мне требовалось больше памяти.

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

Обновление моего экземпляра до F2 (512 МБ 1,2 ГГц) решило эту проблему, и тестирование моего Приложение с осадой показало очень хорошую производительность:

Transactions:               5012 hits
Availability:             100.00 %
Elapsed time:              59.47 secs
Data transferred:           0.45 MB
Response time:              0.30 secs
Transaction rate:          84.28 trans/sec
Throughput:             0.01 MB/sec
Concurrency:               24.95
Successful transactions:        3946
Failed transactions:               0
Longest transaction:            1.08
Shortest transaction:           0.09

Мои друзья-сисопсы говорят мне, что это больше для сценариев python и тому подобного, а не для серверов JVM REST.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...