Spring naar de hoofdinhoud

Technische specificaties van de servers

Onze applicaties bieden we aan in de pakketten 'standard' en 'plus'. De applicatie heeft in beide pakketten steeds exact dezelfde functionaliteit. Het verschil in beide pakketten zit in de hardware specificaties van de server.

Upgraden en downgraden

Upgraden

Wanneer je bij het bestelproces bijvoorbeeld gekozen hebt voor een 'Standard' pakket, dan kan je dit steeds laten upgraden naar een 'Plus' pakket. Dit kan noodzakelijk zijn om bijvoorbeeld meer processor-kracht of meer RAM geheugen kunnen in te zetten, of om de opslagruimte te verhogen.

Downgraden

Als een server bijvoorbeeld van het 'Standard' naar het 'Plus' pakket wordt geupgrade, dan heb je de keuze om enkel de processor (CPU) en het RAM-geheugen te upgraden, of ook de opslagruimte. Wanneer enkel processor en het RAM-geheugen geupgrade wordt, dan kan in de toekomst steeds een downgrade naar het 'Standard' pakket gebeuren. Wanneer ook de opslagruimte geupgrade werd, dan is een downgrade niet meer mogelijk.

Algemene specificaties

Onze virtuele machines worden gehost op servers waarbij de processor en het RAM-geheugen gedeeld worden met andere virtuele machines. Op aanvraag is het mogelijk om dedicated vCPU's te gebruiken.

  • Processor: de exacte CPU GHz kan verschillen, maar zal steeds minimaal 2GHz bedragen. Als processor wordt steeds een AMD EPYC 2nd Gen of een Intel® Xeon® Gold gebruikt (1 vCPU = 1 hyper-thread).
  • RAM-geheugen: het geheugen is steeds ECC-geheugen.
  • Opslagruimte: lokale NVMe SSD's op RAID10.
  • IP-adressen: er wordt steeds 1 IPv4 en 1 IPv6 adres voorzien. Extra IPv4 adressen zijn tegen extra kost verkrijgbaar. Extra IPv6 adressen worden kosteloos toegewezen moest dit noodzakelijk zijn.
  • Netwerk: de server is met een redundante verbinding verbonden met het internet. De netwerksnelheid kan wisselen naar gelang de drukte op dat moment van de dag.

Applicaties

In onderstaand overzicht volgt een beschrijving van de exacte server specificaties per applicatie en per pakket. De servers zijn steeds virtuele servers.

BookStack

Essential

    CPU: 1 vCPU RAM: 2 GB Opslag: 20 GB NVMe SSD

    Standard

    • CPU: 1 vCPU
    • RAM: 2 GB
    • Opslag: 20 GB NVMe SSD

    Plus

    • CPU: 2 vCPU
    • RAM: 4 GB
    • Opslag: 40 GB NVMe SSD

    Invoice Ninja

    Essential

      CPU: 1 vCPU RAM: 2 GB Opslag: 20 GB NVMe SSD

      Standard

      • CPU: 1 vCPU
      • RAM: 2 GB
      • Opslag: 20 GB NVMe SSD

      Plus

      • CPU: 2 vCPU
      • RAM: 4 GB
      • Opslag: 40 GB NVMe SSD

        Snipe-IT

        Essential

          CPU: 1 vCPU RAM: 2 GB Opslag: 20 GB NVMe SSD

          Standard

          • CPU: 1 vCPU
          • RAM: 2 GB
          • Opslag: 20 GB NVMe SSD

          Plus

          • CPU: 2 vCPU
          • RAM: 4 GB
          • Opslag: 40 GB NVMe SSD

          UniFi Network Application

          Essential

          • CPU: 2 vCPU
          • RAM: 4 GB
          • Opslag: 2040 GB NVMe SSD

          Standard

          • CPU: 2 vCPU
          • RAM: 84 GB
          • Opslag: 40 GB NVMe SSD

          Plus

          • CPU: 42 vCPU
          • RAM: 168 GB
          • Opslag: 16080 GB NVMe SSD

          Benchmarks

          Onderstaande benchmarks werden uitgevoerd op een server met 2 vCPU's en 4 GB RAM-geheugen. Als opslagruimte werd Ceph gebruikt (wat zorgt voor 3x replicatie voor een uitstekende redundantie).

          Opslagruimte

          Om benchmarks op de opslagruimte uit te voeren, gebruikte we fio versie 3.25.

          Write

          We schreven 2GB (4 jobs van 512MB):

          sudo fio --name=randwrite --ioengine=libaio --iodepth=1 --rw=randwrite --bs=4k --direct=0 --size=512M --numjobs=4 --runtime=240 --group_reporting

          Dat gaf dit resultaat:

          randwrite: (g=0): rw=randwrite, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=1
          ...
          fio-3.25
          Starting 4 processes
          randwrite: Laying out IO file (1 file / 512MiB)
          randwrite: Laying out IO file (1 file / 512MiB)
          randwrite: Laying out IO file (1 file / 512MiB)
          randwrite: Laying out IO file (1 file / 512MiB)
          Jobs: 1 (f=1): [_(2),w(1),_(1)][100.0%][w=6024KiB/s][w=1506 IOPS][eta 00m:00s]
          randwrite: (groupid=0, jobs=4): err= 0: pid=590583: Sun Oct  3 10:48:09 2021
            write: IOPS=2829, BW=11.1MiB/s (11.6MB/s)(2048MiB/185261msec); 0 zone resets
              slat (usec): min=3, max=668211, avg=1395.72, stdev=9463.50
              clat (nsec): min=676, max=12025k, avg=1943.49, stdev=24278.50
               lat (usec): min=4, max=668224, avg=1397.97, stdev=9465.38
              clat percentiles (nsec):
               |  1.00th=[   700],  5.00th=[   716], 10.00th=[   724], 20.00th=[   884],
               | 30.00th=[   972], 40.00th=[  1224], 50.00th=[  1480], 60.00th=[  1896],
               | 70.00th=[  1976], 80.00th=[  2064], 90.00th=[  2576], 95.00th=[  3056],
               | 99.00th=[ 11072], 99.50th=[ 12736], 99.90th=[ 33536], 99.95th=[ 50944],
               | 99.99th=[112128]
             bw (  KiB/s): min= 1996, max=544976, per=100.00%, avg=11448.16, stdev=7035.72, samples=1461
             iops        : min=  498, max=136244, avg=2861.88, stdev=1758.93, samples=1461
            lat (nsec)   : 750=13.04%, 1000=19.11%
            lat (usec)   : 2=41.36%, 4=22.98%, 10=1.98%, 20=1.36%, 50=0.13%
            lat (usec)   : 100=0.04%, 250=0.01%, 500=0.01%, 750=0.01%, 1000=0.01%
            lat (msec)   : 2=0.01%, 10=0.01%, 20=0.01%
            cpu          : usr=0.32%, sys=1.18%, ctx=15379, majf=0, minf=48
            IO depths    : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
               submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
               complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
               issued rwts: total=0,524288,0,0 short=0,0,0,0 dropped=0,0,0,0
               latency   : target=0, window=0, percentile=100.00%, depth=1
          
          Run status group 0 (all jobs):
            WRITE: bw=11.1MiB/s (11.6MB/s), 11.1MiB/s-11.1MiB/s (11.6MB/s-11.6MB/s), io=2048MiB (2147MB), run=185261-185261msec
          
          Disk stats (read/write):
            sda: ios=2/309414, merge=0/15921, ticks=4/6052273, in_queue=6053606, util=99.96%

          Read

          We lazen 2GB (4 jobs van 512MB):

          sudo fio --name=randread --ioengine=libaio --iodepth=16 --rw=randread --bs=4k --direct=0 --size=512M --numjobs=4 --runtime=240 --group_reporting

          Dat gaf dit resultaat:

          randread: (g=0): rw=randread, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=16
          ...
          fio-3.25
          Starting 4 processes
          randread: Laying out IO file (1 file / 512MiB)
          randread: Laying out IO file (1 file / 512MiB)
          randread: Laying out IO file (1 file / 512MiB)
          randread: Laying out IO file (1 file / 512MiB)
          Jobs: 1 (f=1): [_(2),r(1),_(1)][100.0%][r=9.92MiB/s][r=2538 IOPS][eta 00m:00s]
          randread: (groupid=0, jobs=4): err= 0: pid=590607: Sun Oct  3 10:53:37 2021
            read: IOPS=2873, BW=11.2MiB/s (11.8MB/s)(2048MiB/182482msec)
              slat (usec): min=419, max=634150, avg=1375.53, stdev=3978.29
              clat (usec): min=4, max=695277, avg=20788.95, stdev=16323.28
               lat (usec): min=666, max=696360, avg=22165.82, stdev=16912.00
              clat percentiles (msec):
               |  1.00th=[   13],  5.00th=[   14], 10.00th=[   14], 20.00th=[   15],
               | 30.00th=[   16], 40.00th=[   17], 50.00th=[   18], 60.00th=[   19],
               | 70.00th=[   20], 80.00th=[   22], 90.00th=[   28], 95.00th=[   40],
               | 99.00th=[   91], 99.50th=[  126], 99.90th=[  194], 99.95th=[  255],
               | 99.99th=[  502]
             bw (  KiB/s): min= 3249, max=15859, per=100.00%, avg=11553.01, stdev=518.40, samples=1450
             iops        : min=  812, max= 3964, avg=2888.05, stdev=129.59, samples=1450
            lat (usec)   : 10=0.01%, 750=0.01%, 1000=0.01%
            lat (msec)   : 2=0.01%, 4=0.01%, 10=0.01%, 20=72.28%, 50=24.59%
            lat (msec)   : 100=2.32%, 250=0.74%, 500=0.04%, 750=0.01%
            cpu          : usr=1.21%, sys=5.62%, ctx=527293, majf=0, minf=120
            IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=100.0%, 32=0.0%, >=64=0.0%
               submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
               complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.1%, 32=0.0%, 64=0.0%, >=64=0.0%
               issued rwts: total=524288,0,0,0 short=0,0,0,0 dropped=0,0,0,0
               latency   : target=0, window=0, percentile=100.00%, depth=16
          
          Run status group 0 (all jobs):
             READ: bw=11.2MiB/s (11.8MB/s), 11.2MiB/s-11.2MiB/s (11.8MB/s-11.8MB/s), io=2048MiB (2147MB), run=182482-182482msec
          
          Disk stats (read/write):
            sda: ios=524172/389, merge=0/280, ticks=684886/3732, in_queue=690009, util=100.00%

          Random read/write

          sudo fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=random_read_write.fio --bs=4k --iodepth=64 --size=4G --readwrite=randrw --rwmixread=75

          Dat gaf dit resultaat:

          h=64 --size=4G --readwrite=randrw --rwmixread=75
          test: (g=0): rw=randrw, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=64
          fio-3.25
          Starting 1 process
          test: Laying out IO file (1 file / 4096MiB)
          Jobs: 1 (f=1): [m(1)][100.0%][r=11.7MiB/s,w=4192KiB/s][r=3003,w=1048 IOPS][eta 00m:00s]
          test: (groupid=0, jobs=1): err= 0: pid=590627: Sun Oct  3 10:59:52 2021
            read: IOPS=3000, BW=11.7MiB/s (12.3MB/s)(3070MiB/261937msec)
             bw (  KiB/s): min=11360, max=14376, per=100.00%, avg=12016.69, stdev=126.45, samples=523
             iops        : min= 2840, max= 3594, avg=3004.12, stdev=31.63, samples=523
            write: IOPS=1002, BW=4011KiB/s (4107kB/s)(1026MiB/261937msec); 0 zone resets
             bw (  KiB/s): min= 3416, max= 5104, per=100.00%, avg=4016.23, stdev=232.28, samples=523
             iops        : min=  854, max= 1276, avg=1003.96, stdev=58.14, samples=523
            cpu          : usr=4.74%, sys=19.91%, ctx=755757, majf=0, minf=8
            IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0%
               submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
               complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.1%, >=64=0.0%
               issued rwts: total=785920,262656,0,0 short=0,0,0,0 dropped=0,0,0,0
               latency   : target=0, window=0, percentile=100.00%, depth=64
          
          Run status group 0 (all jobs):
             READ: bw=11.7MiB/s (12.3MB/s), 11.7MiB/s-11.7MiB/s (12.3MB/s-12.3MB/s), io=3070MiB (3219MB), run=261937-261937msec
            WRITE: bw=4011KiB/s (4107kB/s), 4011KiB/s-4011KiB/s (4107kB/s-4107kB/s), io=1026MiB (1076MB), run=261937-261937msec
          
          Disk stats (read/write):
            sda: ios=785846/263003, merge=0/369, ticks=14976854/1709153, in_queue=16694514, util=100.00%

          Netwerk

          We voerden een speedtest uit vanaf een server in Falkenstein naar een server in Frankfurt.

          speedtest

          Dat gaf dit resultaat:

          Retrieving speedtest.net configuration...
          Testing from Hetzner Online GmbH (23.88.112.79)...
          Retrieving speedtest.net server list...
          Selecting best server based on ping...
          Hosted by RETN (Frankfurt) [0.31 km]: 6.031 ms
          Testing download speed..................................................
          Download: 2181.90 Mbit/s
          Testing upload speed....................................................
          Upload: 1923.87 Mbit/s

          Processor

          We voerden een sysbench test uit met versie 1.0.20.

          sysbench cpu --threads=2 run

          Dat gaf dit resultaat:

          sysbench 1.0.20 (using system LuaJIT 2.1.0-beta3)
          
          Running the test with following options:
          Number of threads: 2
          Initializing random number generator from current time
          
          
          Prime numbers limit: 10000
          
          Initializing worker threads...
          
          Threads started!
          
          CPU speed:
              events per second:  1792.00
          
          General statistics:
              total time:                          10.0013s
              total number of events:              17927
          
          Latency (ms):
                   min:                                    1.04
                   avg:                                    1.11
                   max:                                    8.92
                   95th percentile:                        1.30
                   sum:                                19967.00
          
          Threads fairness:
              events (avg/stddev):           8963.5000/22.50
              execution time (avg/stddev):   9.9835/0.01