KlausT / ccminer

Software for mining various cryptocoins
GNU General Public License v3.0
403 stars 312 forks source link

About stratum timeout error. #36

Closed miningpoolhub closed 7 years ago

miningpoolhub commented 7 years ago

Hi I'm running miningpoolhub.

Some miners asked issue when using your KalusT miner

Seems like other ccminer doesn't produce similar error. Do you have any idea why it happens?

How long is the job refresh timeout interval? Pool sends job within every 55 seconds like most nomp pools.

KlausT commented 7 years ago

This usually happens when there are connection problems. Right now I can't test it because my Internet is broken, but I will check it later.

fonyo commented 7 years ago

The issue persists with v8.10. All rigs are using ethernet connection.

aaronsace commented 7 years ago

Anyone tried version 8.11?

fonyo commented 7 years ago

As explained in the thread above, issue is still present in v8.11

KlausT commented 7 years ago

There's nothing I can do. I have already increased all the timeout values.

rexthefex commented 7 years ago

The miner doesn't retry after a failed connection. This could be the reason for this issue.

KlausT commented 7 years ago

I can't reproduce this problem. How often is this happening? Once a day?

rexthefex commented 7 years ago

It happens during the first start of the miner. If it connects - everything is fine until the miner is manually shut down. If it doesn't connect - it keeps on spamming "GPU #0: waiting for data" without retrying.

It is easy to reproduce the problem. It happens once in 5-10 retries.

Log message:

PS C:\Users\nitrous\Desktop\1060\Bin\NVIDIA-KlausT> .\ccminer.exe -d 0,4 -a neoscrypt -o stratum+tcp://hub.miningpoolhub.com:17012 -u redacted.red -p x --debug --protocol-dump
ccminer 8.11-KlausT (64bit) for nVidia GPUs
Compiled with Visual Studio 2015 using Nvidia CUDA Toolkit 8.0

Based on pooler cpuminer 2.3.2 and the tpruvot@github fork
CUDA support by Christian Buchner, Christian H. and DJM34
Includes optimizations implemented by sp-hash, klaust, tpruvot and tsiv.

[2017-08-04 22:32:06] using libcurl 7.54.0
[2017-08-04 22:32:06] libcurl supports IPv6
[2017-08-04 22:32:06] libcurl supports SSL
[2017-08-04 22:32:06] libcurl supports international domain names
[2017-08-04 22:32:08] Starting Stratum on stratum+tcp://hub.miningpoolhub.com:17012
[2017-08-04 22:32:08] restart_threads
* Rebuilt URL to: http://hub.miningpoolhub.com:17012/
*   Trying 34.224.196.33...
* TCP_NODELAY set
[2017-08-04 22:32:08] Device 1309221592: nvmlDeviceSetAPIRestriction() failed: Insufficient Permissions
[2017-08-04 22:32:08] Device 1309305648: nvmlDeviceSetAPIRestriction() failed: Insufficient Permissions
[2017-08-04 22:32:08] Device 1309389704: nvmlDeviceSetAPIRestriction() failed: Insufficient Permissions
[2017-08-04 22:32:08] Device 1309473760: nvmlDeviceSetAPIRestriction() failed: Insufficient Permissions
[2017-08-04 22:32:08] Device 1309557816: nvmlDeviceSetAPIRestriction() failed: Insufficient Permissions
[2017-08-04 22:32:08] CUDA GPU 0 matches NVML GPU 2 by busId 3
[2017-08-04 22:32:08] CUDA GPU 1 matches NVML GPU 0 by busId 1
[2017-08-04 22:32:08] CUDA GPU 2 matches NVML GPU 1 by busId 2
[2017-08-04 22:32:08] CUDA GPU 3 matches NVML GPU 3 by busId 7
[2017-08-04 22:32:08] CUDA GPU 4 matches NVML GPU 4 by busId 8
[2017-08-04 22:32:08] NVML GPU monitoring enabled.
[2017-08-04 22:32:08] 2 miner threads started, using 'neoscrypt' algorithm.
[2017-08-04 22:32:08] Binding thread 0 to cpu 0 (mask 1)
[2017-08-04 22:32:08] Binding thread 1 to cpu 1 (mask 2)
[2017-08-04 22:32:08] GPU #0: waiting for data
* Connected to hub.miningpoolhub.com (34.224.196.33) port 17012 (#0)
* Connection #0 to host hub.miningpoolhub.com left intact
[2017-08-04 22:32:08] > {"id": 1, "method": "mining.subscribe", "params": ["ccminer/8.11-KlausT"]}
[2017-08-04 22:32:11] GPU #0: waiting for data
[2017-08-04 22:32:14] GPU #0: waiting for data
[2017-08-04 22:32:17] GPU #0: waiting for data
[2017-08-04 22:32:18] stratum_subscribe timed out
[2017-08-04 22:32:18] ...retry after 10 seconds
[2017-08-04 22:32:20] GPU #0: waiting for data
[2017-08-04 22:32:23] GPU #0: waiting for data
[2017-08-04 22:32:26] GPU #0: waiting for data
[2017-08-04 22:32:29] GPU #0: waiting for data
[2017-08-04 22:32:32] GPU #0: waiting for data
[2017-08-04 22:32:35] GPU #0: waiting for data

...when eventually:

[2017-08-04 22:41:36] GPU #0: waiting for data
[2017-08-04 22:41:36] API: connection from 127.0.0.1 - Accepted
[2017-08-04 22:41:36] API: exec command summary()
[2017-08-04 22:41:39] GPU #0: waiting for data
[2017-08-04 22:41:42] GPU #0: waiting for data
[2017-08-04 22:41:45] GPU #0: waiting for data
[2017-08-04 22:41:48] GPU #0: waiting for data
[2017-08-04 22:41:51] GPU #0: waiting for data
[2017-08-04 22:41:54] GPU #0: waiting for data
[2017-08-04 22:41:57] GPU #0: waiting for data
[2017-08-04 22:42:00] GPU #0: waiting for data
[2017-08-04 22:42:03] GPU #0: waiting for data
[2017-08-04 22:42:06] GPU #0: waiting for data
[2017-08-04 22:42:09] GPU #0: waiting for data
[2017-08-04 22:42:12] GPU #0: waiting for data
[2017-08-04 22:42:15] GPU #0: waiting for data
[2017-08-04 22:42:16] API: connection from 127.0.0.1 - Accepted
[2017-08-04 22:42:16] API: exec command summary()
[2017-08-04 22:42:18] GPU #0: waiting for data
[2017-08-04 22:42:21] GPU #0: waiting for data
[2017-08-04 22:42:24] GPU #0: waiting for data
[2017-08-04 22:42:27] GPU #0: waiting for data
[2017-08-04 22:42:30] GPU #0: waiting for data
[2017-08-04 22:42:33] GPU #0: waiting for data
[2017-08-04 22:42:36] GPU #0: waiting for data
[2017-08-04 22:42:39] GPU #0: waiting for data
[2017-08-04 22:42:43] GPU #0: waiting for data
[2017-08-04 22:42:46] GPU #0: waiting for data
[2017-08-04 22:42:49] GPU #0: waiting for data
[2017-08-04 22:42:52] GPU #0: waiting for data
[2017-08-04 22:42:53] API: connection from 127.0.0.1 - Accepted
[2017-08-04 22:42:53] API: exec command summary()
[2017-08-04 22:42:55] GPU #0: waiting for data
[2017-08-04 22:42:58] GPU #0: waiting for data
[2017-08-04 22:43:01] GPU #0: waiting for data
[2017-08-04 22:43:04] GPU #0: waiting for data
[2017-08-04 22:43:07] GPU #0: waiting for data
[2017-08-04 22:43:10] GPU #0: waiting for data
[2017-08-04 22:43:13] GPU #0: waiting for data
[2017-08-04 22:43:16] GPU #0: waiting for data

...and so on. It doesn't respond to ctrl-c events and doesn't retry automatically until the miner is restarted.

The API connection bit might be irrelevant as I ran multipool miner soon after the first failed attempt.

KlausT commented 7 years ago

Oh, ok. I didn't test it with neoscrypt. For some reason the pool doesn't respond sometimes. Right now I have no idea why the retry doesn't work, but I will see if I can find something.

rexthefex commented 7 years ago

The same happens with Myriad-Groestl and possibly other algos. There might be something wrong with the pool's configuration and your miner doesn't retry automatically on timeout.

fonyo commented 7 years ago

It took me 30 tries yesterday to get it going. Tpruvot's fork works flawlessly, not sure what you are doing differently regarding stratum connections.

fonyo commented 7 years ago

If you really need a test bench, I could give you access to one of my rigs through teamviewer so you can see the issue.

KlausT commented 7 years ago

No need, I can see it here. Do you know if this happens under Linux too? I still have no idea why the retry doesn't work. Maybe a libcurl thing.

KlausT commented 7 years ago

Looks like this is an ancient bug, at least 2 years old. screenshot

fonyo commented 7 years ago

Gotcha you little bugger. Does that mean the fix is coming? ;)

rexthefex commented 7 years ago

Perhaps the timeout it is one of the pool's safeguards against DDoS attacks as it starts accepting requests after 5 minutes or so. Other ccminer forks exhibit the same behavior and the only issue seems to be that yours doesn't retry after a failed connection.

KlausT commented 7 years ago

I have found the retry bug now. After a timeout ccminer will disconnect and try again

fonyo commented 7 years ago

Thanks mate. Great job! I can confirm it is definitely looking good. What's up with the "GPU #n: waiting for data" messages? Are those coming from pool-side issues?

KlausT commented 7 years ago

I think I should change that message, It only neans that the pool has not responded yet and the GPUs are idle.