I noticed lately that online services are not updated as specified on "update interval" and online services table remains unchanged for more than half an hour sometimes when comparing AM with Nemos Miner statistics update at the same time.
I am thinking that because there are so many miners, most probably errors are returned from the pools with connection timeout. A very fast workaround would be to retry after 10 seconds a new pool statistics update and do not wait another update interval of a few minutes.
Waiting for the next update interval when again, it could be an error when one request is made might be too much and the miner could mine a very unprofitable coin that spiked for some minutes.
This might be also the problem that is causing Awesome Miner to be less profitable with current mining than 24h, against all logic. What I think it happens is that AM starts mining Tribus for example at $20/day/rig and after that profitability for tribus drops to $3/day/rig and because AM is not refreshing statistics, all rigs remain to mine at $3/day/rig even half an hour, and this leads to disastrous profitability if you use current statistics.
A solution might be introducing a very fast NodeJs socket based statistics on 2 separate servers(for fail safe) that will be used to send statistics to miners through the socket without any delay and that can handle easily 100,000 connections without noticeable cpu load. You will make on your server requests to pool API every 10 seconds, but you will avoid having Awesome Miner making 100,000 http requests to pool APIs that are overkill for all pools.
Like that you will reduce api load for pools by 10,000 times, by implementing this is a huge optimization for everyone.
What do you think, Patrike ?
Are you there ?
To check I used "view details" for the miner and seen that statistics are not being updated as supposed to. Most probably DDOS protection from datacenters denies the API requests to pools statistics because there or too many or simply all pool servers are overloaded by thousands of requests they receive every minute.
It is important to have a retry procedure at a few seconds after failed attempt for all failed or timeout errors from pools statistics until you implement a reliable socket based service.
Remember that pools refresh the statistics every 30 seconds and you can decrease the number of requests to pools from 500 per second (thousands of miners requesting HTTP pool statistics updates) to just one every 10 seconds and after that you can update all 100.000 miners next seconds using sockets. Like that you will decrease pool server load by at least 500 times.
I switched a few hundred rigs I have from Aweosome Miner to Nemos Miner 3.0 because it handles better statistics requests and also I have in Nemos 5 more miners that was not included in Awesome Miner (raven miner , poly, ...)
What do you think, Patrike ?
Are you there, Patrike ?
Statistics are not updating every X minutes, if one pool fails to return statistics, also all the other pools statistics are not updated, probably you have an error in the code.
Also I think it will be very useful to see on "VIEW DETAILS" what pool statistics was updated and when (because one pool might have failed statistics for half an hour and you can continue to mine Tribus for example at 10% of the amount you could mine X17 if you had statistics updated and not remained with outdated Tribus high statistics form half an hour ago), right ?
As you also point out, it's not that uncommon that some of these pools are down (at least from an API point of view) some period of times. Awesome Miner will of course fail to update the profit information during that period of time. However, as soon as the pool is responding to the API requests again, Awesome Miner will get the refreshed profit information before the next profit switching check is going to happen. It's generally not a good idea to try again within just a few seconds, because then you just put even more load on the poor server that is trying to recover.
Awesome Miner is also more friendly to the pool API's than some other software. When you have a many miners with Awesome Miner, it's only the main application that request the information from the pools - not each miner. With some other mining software where you don't have any centralized management, I assume each computer doing mining will put load on the pool API's.
If a single pool like zpool is down, it should not affect the statistics updates for all the others as these requests are allowed to fail individually. Based on your report here, I will however do some investigation here to see if there can be any scenario where it isn't working as expected. If you have found any specific way of reproducing it, please let me know. Thanks!
I do like your point about being able to see when the last updates was made. As these are global updates for the pools it should probably not go into the View Details of each miner, but in some application wide "Service Status". It would also be good so see if for example the WhatToMine API is unavailable in a similar way. Also, today you can see if Awesome Miner mark any pool as "Failed" in the View Details dialog. In the same global "Service Status" dialog, it would be good to see a summary of this. Then you can simply open this dialog and get a good understanding of if a few specific Nicehash pools are down, or the Zpool API hasn't been updated for 4 hours and so on.