使用512M内存的最便宜的VPS,运行在docker上的nginx + php + elasticsearch

我只有在Elasticsearch上遇到了困难,几乎没有接触过PHP和Nginx。

虚拟专用服务器

亚马逊光亮航 512MB计划
https://aws.amazon.com/jp/lightsail/
操作系统:亚马逊Linux

docker-compose.yml的翻译选项:

version: "2"
services:
  # php-fpm
  phpfpm:
    build: ./phpfpm/
    links:
      - elastic
    volumes:
      - ./data:/var/www/html
    mem_limit: 64m

  # nginx
  nginx:
    build: ./nginx/
    ports:
      - 80:80
    links:
      - phpfpm
    volumes:
      - ./data:/var/www/html
    mem_limit: 64m

  # Elasticsearch
  elastic:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.5.1
    environment:
      - cluster.name=docker-cluster
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      nproc:
        soft: 4096
        hard: 4096
      memlock:
        soft: 256000
        hard: 256000
      nofile:
        soft: 65536
        hard: 65536
    mem_limit: 256m
    memswap_limit: 2g

需要重点关注的是Elasticsearch的设置。由于需要相当多的机器资源,所以本来就不应该这样使用。

基本上是Elasticsearch的官方指南,根据这个指南做了一些调整得到了上述结果。
https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html

    • プロセス数(nproc)は4096の確保が必須。確保しないとelasticsearchのヘルスチェックでfailしてコンテナが停止

 

    • ファイルディスクリプタ(nofile)は65536の確保が必須。確保しないと(ry

 

    • (memlockはmem_limitに合わせただけ。確保すべき値は不明)

 

    • mem_limitはホストマシンのメモリの半分≒256mを確保。えいや〜

 

    • memswap_limitで2Gを確保。えいや〜

 

    • bootstrap.memory_lock: true の設定を使わない。true = スワッピングをさせない

 

    (当然Elasticsearchの公式では、パフォーマンスとノードの安定性のためにこの設定をtrueにするように言及している)

为了提高性能和节点稳定性,需要禁用交换操作。

如果不使用这样脆弱的机器,我觉得就不需要写上面的设置。(在我的本地电脑上不需要)

(参考)进行领域的置换保护

bannerAds