bitbucket pipelines上でlocalstackが落ちる

bitbucket pipelines上でPHPUnitを回す際にLocalStackのElasticsearchを利用すると頻繁に落ちた。

ログは下記。

2019-05-12T14:38:13:ERROR:localstack.services.generic_proxy: Error forwarding request: ('Connection aborted.', error(104, 'Connection reset by peer')) Traceback (most recent call last):
  File "/opt/code/localstack/localstack/services/generic_proxy.py", line 216, in forward
    headers=forward_headers, stream=True)
  File "/opt/code/localstack/.venv/lib/python2.7/site-packages/requests/api.py", line 116, in post
    return request('post', url, data=data, json=json, **kwargs)
  File "/opt/code/localstack/.venv/lib/python2.7/site-packages/requests/api.py", line 60, in request
    return session.request(method=method, url=url, **kwargs)
  File "/opt/code/localstack/.venv/lib/python2.7/site-packages/requests/sessions.py", line 533, in request
    resp = self.send(prep, **send_kwargs)
  File "/opt/code/localstack/.venv/lib/python2.7/site-packages/requests/sessions.py", line 646, in send
    r = adapter.send(request, **kwargs)
  File "/opt/code/localstack/.venv/lib/python2.7/site-packages/requests/adapters.py", line 498, in send
    raise ConnectionError(err, request=request)
ConnectionError: ('Connection aborted.', error(104, 'Connection reset by peer'))

わかっている状況として、

  • 毎回落ちるテストにバラつきがある
  • ローカル開発環境でもLocalStackの動作が結構重い

ことから、LocalStackに割り当てるメモリが足りていないのでは? と仮説を立てる。

confluence.atlassian.com

ここに割り当てメモリを指定する方法が載っていた。 デフォルトは1024MBらしい。

    localstack:
      image: localstack/localstack:0.9.0
      environment:
        SERVICES: s3,sns,elasticsearch
      memory: 2048 # メモリ指定

上記のように2048MB割り当てるように指定。

LocalStackは安定しテストは落ちなくなった。