do not forget to check this:
Server performance settingsMT Serverminetest.conf# for [Mod] free_lj_mem 1.5
timeloop = 1800
maxluamem = 350000
# keep lua mem low (avoid OOM)
# Maximum number of players connected simultaneously
max_users = 32
# keep maybe just 10% higher than max you know server can handle
# (do not forget lost points if higher than 32)
# allow profiler for some time, use with /profiler save and see cpu using mods
profiler.load = true
# *** FOLLOWING I explain later ***
# but this are most my settings
#
check my server lag, before listen to complain posts I have proofed it
# how many blocks are flying in the wire simultaneously per client
#max_simultaneous_block_sends_per_client = 40
max_simultaneous_block_sends_per_client = 400
# how many blocks are flying in the wire simultaneously per server
#max_simultaneous_block_sends_server_total = 200
max_simultaneous_block_sends_server_total = 12000
# Number of extra blocks that can be loaded by /clearobjects at once
# This is a trade-off between sqlite transaction overhead and
# memory consumption (4096=100MB, as a rule of thumb)
#max_clearobjects_extra_loaded_blocks = 4096
max_clearobjects_extra_loaded_blocks = 512000
# when you have a lot of RAM, use it !
# From how far clients know about objects, stated in mapblocks (16 nodes).
# type: int
# active_object_send_range_blocks = 3
active_object_send_range_blocks = 3
# How large area of blocks are subject to the active block stuff, stated in mapblocks (16 nodes).
# In active blocks objects are loaded and ABMs run.
# type: int
# active_block_range = 3
active_block_range = 2
# this one mostly is resulting in lag !!!
# From how far blocks are sent to clients, stated in mapblocks (16 nodes).
# type: int
# max_block_send_distance = 10
max_block_send_distance = 10
# Maximum number of forceloaded blocks
#max_forceloaded_blocks = 16
max_forceloaded_blocks = 5120
#server_unload_unused_data_timeout = 600 # 86400 24 h, 1 Tag
server_unload_unused_data_timeout = 86400
# when you have a lot of RAM and set cache, then USE it !
# Maximum number of statically stored objects in a block.
# type: int
# max_objects_per_block = 64
max_objects_per_block = 1024
# this maybe an issues when using pipeworks, works like this
# See
http://www.sqlite.org/pragma.html#pragma_synchronous# type: enum values: 0, 1, 2
# sqlite_synchronous = 2
sqlite_synchronous = 1
# Level of logging to be written to debug.txt.
# 0 = none, 1 = errors and debug, 2 = action, 3 = info, 4 = verbose
#debug_log_level = error,debug,warning
debug_log_level = warning
# Maximum number of blocks that can be queued for loading.
#emergequeue_limit_total = 256
emergequeue_limit_total = 5120
# never proofed, but works also
# Maximum number of blocks to be queued that are to be loaded from file.
# Set to blank for an appropriate amount to be chosen automatically.
#emergequeue_limit_diskonly = 32
emergequeue_limit_diskonly = 4096
# never proofed, but works also
# Maximum number of blocks to be queued that are to be generated.
# Set to blank for an appropriate amount to be chosen automatically.
#emergequeue_limit_generate = 32
emergequeue_limit_generate = 2048
# never proofed, but works also
# Number of emerge threads to use. Make this field blank, or increase this number, to use multiple threads.
# On multiprocessor systems, this will improve mapgen speed greatly, at the cost of slightly buggy caves.
#num_emerge_threads = 1
num_emerge_threads = 5
# I have 8 threads on 4 cores, so as 2 main mts are allways at me, and keep one for system i set (8 - 2 - 1 =) 5
# maximum number of packets sent per send step, if you have a slow connection
# try reducing it, but don't reduce it to a number below double of targeted
# client number
#max_packets_per_iteration = 1024
max_packets_per_iteration = 8192
# the higher the more (fast) date your clients get update - but if low INTERNET, mhhh
# Length of a server tick and the interval at which objects are generally updated over network.
# type: float
# dedicated_server_step = 0.09
dedicated_server_step = 0.033
server_step = 0.05
# whatever coders complain about this - I get my advantage with this !
# Time in between active block management cycles
# type: float
# active_block_mgmt_interval = 2.0
active_block_mgmt_interval = 1.5
# Length of time between ABM execution cycles
# type: float
# abm_interval = 1.0
abm_interval = 1.0
# Length of time between NodeTimer execution cycles
# type: float
# nodetimer_interval = 0.2
nodetimer_interval = 0.2
# At this distance the server will aggressively optimize which blocks are sent to clients.
# Small values potentially improve performance a lot, at the expense of visible rendering glitches.
# (some blocks will not be rendered under water and in caves, as well as sometimes on land)
# Setting this to a value greater than max_block_send_distance disables this optimization.
# Stated in mapblocks (16 nodes)
# type: int min: 2
# block_send_optimize_distance = 4
block_send_optimize_distance = 2
# type: bool
# server_side_occlusion_culling = true
server_side_occlusion_culling = true
world.mtuse faster database backend
* worldmap
* player
* ...
But maybe all optimizations are nothing worth when high ping / rtt gamer join in
I remember, when I got into ctf they all realized higher lag, even not know I was the reason with 250 ping.