Well that depends on the bottleneck you are having ;>
Check the output first of the command
top
Looks for the top 2-3 processes that are running and see what they are.... see if any processes are chewing RAM.
I am running Ubuntu Server 12.04 - not the desktop version and NO use of Windowing Application (all console/vty)
If you are running GEN=1 in your lottocoin.conf? You might be trying to mine on the same computer running MPOS... I wouldnt recommend that, nor running minerd/cgminer, or bfgminer on the same host running the pool.
You should ensure you have enough CPU/RAM, you are not spooling to a paging file... that you are not mining on the same computer running the stratum proxy...
If its network related - there are a ton of tuning parameters you can set....
I am posting a few related configurations below I set...
for ./etc/sysctl.conf
net.ipv4.conf.default.rp_filter=1
net.ipv4.conf.all.rp_filter=1
net.ipv4.tcp_syncookies=1
net.ipv4.tcp_mtu_probing = 1
net.ipv4.tcp_rfc1337 = 1
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_frto_response = 2
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv4.tcp_keepalive_time = 60
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv6.conf.all.accept_source_route = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv6.conf.all.accept_source_route = 0
net.ipv4.conf.all.log_martians = 1
kernel.dmesg_restrict = 1
net.ipv4.tcp_thin_dupack = 0
net.ipv4.tcp_thin_linear_timeouts = 0
net.ipv4.tcp_fin_timeout = 60
net.ipv4.ip_local_port_range = 32768 61000
net.ipv4.tcp_max_tw_buckets = 4096
net.ipv4.tcp_no_metrics_save = 1
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_sack = 1
net.ipv4.tcp_fack = 1
net.ipv4.tcp_moderate_rcvbuf = 1
net.ipv4.tcp_congestion_control=cubic
net.ipv4.tcp_max_syn_backlog=128
net.ipv4.tcp_synack_retries=1
I start lottocoind with:
lottocoind -maxconnections=256 -irc -listen -maxreceivebuffer=5000 -maxsendbuffer=5000 -timeout=1000 -dns -onlynet=ipv4 -banscore=100 -detachdb -daemon -logtimestamps -blocknotify="~/.lottocoin/blocknotify.sh --password XXXX"
I start stratum with:
/usr/bin/python /usr/bin/twistd -y ~/lottocoin/stratum/launcher.tac -l ~/.lottocoin/debug-stratum.log
I edit crontab with:
crontab -e
The contents are:
0-59/10 * * * * /var/www/MPOS_LOTTO/cronjobs/run-crons.sh -f
0-59/5 * * * * /var/www/MPOS_LOTTO/cronjobs/auto_payout.php -f
0-59/5 * * * * /var/www/MPOS_LOTTO/cronjobs/manual_payout.php -f
0 1 * * * bash ~/bin/backup-sql.sh
10 1 * * * bash ~/bin/backup-system.sh
0 0 * * * bash ~/bin/logrotate.sh
0 0 * * * bash /var/www/MPOS_LOTTO/cronjobs/logrotate.sh
run-crons is needed to cleanup MPOS, and produce stats for the users.... using the latest version I had to use -f to FORCE them to run. Producing an error otherwise...
the backup SQL and backup System are scripts that dump the configurations, wallet and sql data off to a NAS device (for off host storage copy of wallet and settings, etc)..
All my logs I configured to put in
~/.lottocoin
The log rotate for LOTTO cleans the cron job logs
The log rotate in ~/bin cleans the lottocoind logs
Check 'df -k' as well - and make sure you have enough disk space?
If you dont have much RAM you might be swapping a bit.... if swapping to a slow disk - and using a ton of mem by MySQL or other processes - this might be an issue.
I have 16 Gig RAM and Quad 3.2 Intel proc.... so plenty of processing power - depending on your hardware - experience may vary greatly just on the hardware power.
There is setting in MPOS to tune how much load it will take - I bumped that up to 20%... but cannot say I have seen it use anywhere near it.
You might look at the thread size, the log size (and location), the load max for the MPOS, as well make sure that memcache (if you have the ram then?) is installed and running.
My Python stratum config for lotto is below - and below that my
config.py from the stratum proxy server location config
CENTRAL_WALLET = '%MY_WALLET_ADDRESS'
LITECOIN_TRUSTED_HOST = 'localhost'
LITECOIN_TRUSTED_PORT = %RPC_PORT
LITECOIN_TRUSTED_USER = '%MY_RPC_USER'
LITECOIN_TRUSTED_PASSWORD = 'MY_RPC_USERPASS'
DEBUG = False
LOGDIR = '~/.lottocoin'
LOGFILE = "lotto_stratum.log"
LOGLEVEL = 'INFO'
LOG_ROTATION = True
LOG_SIZE = 10485760 # Rotate every 10M
ENABLE_EXAMPLE_SERVICE = False
HOSTNAME = '%MY_POOL_HOSTNAME'
LOG_RETENTION = 10 # Keep 10 Logs
THREAD_POOL_SIZE = 300
LISTEN_SOCKET_TRANSPORT = 3333
LISTEN_HTTP_TRANSPORT = None
LISTEN_HTTPS_TRANSPORT = None
LISTEN_WS_TRANSPORT = None
LISTEN_WSS_TRANSPORT = None
PASSWORD_SALT = '34asdkakljsd8u932hjicjnoj390390jdokl~##$'
DB_MYSQL_HOST = 'localhost'
DB_MYSQL_DBNAME = 'mpos_lot'
DB_MYSQL_USER = '%MYDBUSER'
DB_MYSQL_PASS = '%MYDBPASS'
DB_LOADER_CHECKTIME = 15 # How often we check to see if we should run the loader
DB_LOADER_REC_MIN = 1 # Min Records before the bulk loader fires
DB_LOADER_REC_MAX = 50 # Max Records the bulk loader will commit at a time
DB_LOADER_FORCE_TIME = 300 # How often the cache should be flushed into the DB regardless of size.
DB_STATS_AVG_TIME = 300 # When using the DATABASE_EXTEND option, average speed over X sec
DB_USERCACHE_TIME = 600 # How long the usercache is good for before we refresh
USERS_AUTOADD = False # Automatically add users to db when they connect.
USERS_CHECK_PASSWORD = True # Check the workers password? (Many pools don't)
COINBASE_EXTRAS = '/stratumPool/' # Extra Descriptive String to incorporate in solved blocks
ALLOW_NONLOCAL_WALLET = False # Allow valid, but NON-Local wallet's
PREVHASH_REFRESH_INTERVAL = 60 # How often to check for new Blocks
MERKLE_REFRESH_INTERVAL = 60 # How often check memorypool
INSTANCE_ID = 31
POOL_TARGET = 16
VARIABLE_DIFF = True
USE_LITECOIN_DIFF = True
DIFF_UPDATE_FREQUENCY = 300
VDIFF_MIN_TARGET = 8
VDIFF_MAX_TARGET = 1000
VDIFF_TARGET_TIME = 30
VDIFF_RETARGET_TIME = 120
VDIFF_VARIANCE_PERCENT = 20
SOLUTION_BLOCK_HASH = False
ADMIN_PASSWORD_SHA256 = 'PASSSHA'
My MPOS configuration from the include directory (global.inc.php):
$config['algorithm'] = 'scrypt';
$config['db']['host'] = 'localhost';
$config['db']['user'] = '%MYDBUSER';
$config['db']['pass'] = '%MYDBPASS';
$config['db']['port'] = 3306;
$config['db']['name'] = 'mpos_lot';
$config['wallet']['type'] = 'http';
$config['wallet']['host'] = 'localhost:%MYPORT';
$config['wallet']['username'] = '%MY_RPC_USER';
$config['wallet']['password'] = '%MY_RPC_USERPASS';
$config['maxfailed']['login'] = 3;
$config['maxfailed']['pin'] = 3;
$config['gettingstarted']['coinname'] = 'LottoCoin';
$config['gettingstarted']['coinurl'] = '
http://lottocoin.org';
$config['gettingstarted']['stratumport'] = '3333';
$config['price']['url'] = '
https://btc-e.com';
$config['price']['target'] = '/api/2/lot_usd/ticker';
$config['price']['currency'] = 'USD';
$config['ap_threshold']['min'] = 10000;
$config['ap_threshold']['max'] = 500000;
$config['accounts']['invitations']['count'] = 5;
$config['currency'] = 'LOT';
$config['cointarget'] = '30';
$config['txfee'] = 0.1;
$config['block_bonus'] = 500; #I AM GIVING AWAY 500 COINS FOR ANYONE FINDING A BLOCK
$config['payout_system'] = 'pplns';
$config['purge']['sleep'] = 5;
$config['purge']['shares'] = 500000;
$config['archive']['maxrounds'] = 10;
$config['archive']['maxage'] = 60 * 24;
$config['fees'] = 0; #I AM NOT CHARGING ANY FEES FOR THE POOL
$config['pplns']['shares']['default'] = 4000000;
$config['pplns']['shares']['type'] = 'blockavg';
$config['pplns']['blockavg']['blockcount'] = 10;
$config['pplns']['reverse_payout'] = false; // add user shares from archive even if user not in current round
$config['pplns']['dynamic']['percent'] = 30; // percentage of round shares factored into block average when using dynamic type
$config['difficulty'] = 20;
$config['reward_type'] = 'block';
$config['reward'] = 10;
$config['confirmations'] = 4;
$config['network_confirmations'] = 60;
$config['pps']['reward']['default'] = 50;
$config['pps']['reward']['type'] = 'blockavg';
$config['pps']['blockavg']['blockcount'] = 10;
$config['memcache']['enabled'] = true;
$config['memcache']['host'] = 'localhost';
$config['memcache']['port'] = 11211;
$config['memcache']['keyprefix'] = 'mpos_lot';
$config['memcache']['expiration'] = 90;
$config['memcache']['splay'] = 15;
$config['cookie']['duration'] = '1440';
$config['cookie']['domain'] = '';
$config['cookie']['path'] = '/';
$config['cookie']['httponly'] = true;
$config['cookie']['secure'] = false;
$config['smarty']['cache'] = 0;
$config['smarty']['cache_lifetime'] = 30;
$config['system']['load']['max'] = 20.0;