bisq-network / bisq

A decentralized bitcoin exchange network
https://bisq.network
GNU Affero General Public License v3.0
4.73k stars 1.27k forks source link

Java heap space #2132

Closed jason-me closed 5 years ago

jason-me commented 5 years ago

bisq.log

jason-me commented 5 years ago

Received the Java Heap Space error with attached log dump in MacOS Sierra 10.12.5 using Bisq 0.9.0 Network version: 1; P2P message version: 10; Local DB version: 1; Trade protocol version: 1

ripcurlx commented 5 years ago

@jason-me Does it work for you again after a restart? Just want to make sure if this is an issue that occurs after client runs for a long time (maybe a small memory leak somewhere) or blocks you from using it now completely.

j3ko commented 5 years ago

This looks like the relevant portion of the log:

Dec-15 04:40:58.443 [JavaFX Application Thread] INFO b.c.p.p.PriceFeedService: request from provider http://xc3nh4juf2hshy7e.onion/ 70.752 sec. after last request Dec-15 04:41:04.180 [JavaFX Application Thread] INFO b.c.p.p.PriceFeedService: Received new MarketPrice(currencyCode=USD, price=3190.89, timestampSec=1544870380947, isExternallyProvidedPrice=true) from provider http://xc3nh4juf2hshy7e.onion/ after 5.737 sec. Dec-15 04:41:07.342 [JavaFX Application Thread] WARN b.c.trade.Trade: depositTx is null Dec-15 04:41:07.344 [JavaFX Application Thread] WARN b.c.trade.Trade: depositTx is null Dec-15 04:41:34.344 [InputHandler-g53aziupefukhy73.onion:9999] INFO b.n.p.n.Connection$SharedModel: Shut down caused by exception java.net.SocketTimeoutException: Read timed out on connection=Connection{peerAddress=Optional[g53aziupefukhy73.onion:9999], peerType=PEER, uid='28f74a3a-1fef-454e-b27c-f7e4a90114a2'} Dec-15 04:41:34.376 [JavaFX Application Thread] INFO b.n.p.p.PeerManager: onDisconnect called: nodeAddress=Optional[g53aziupefukhy73.onion:9999], closeConnectionReason=CloseConnectionReason{sendCloseMessage=false, isIntended=false} SOCKET_TIMEOUT Dec-15 04:41:34.377 [JavaFX Application Thread] INFO b.n.p.p.p.PeerExchangeManager: onDisconnect closeConnectionReason=CloseConnectionReason{sendCloseMessage=false, isIntended=false} SOCKET_TIMEOUT, nodeAddressOpt=Optional[g53aziupefukhy73.onion:9999] Dec-15 04:41:53.462 [Save-file-task-273] ERROR b.c.s.FileManager: Error in saveToFile toProtoMessage: TradeStatistics2Store, /Users/JMH/Library/Application Support/Bisq/btc_mainnet/db/TradeStatistics2Store Dec-15 04:41:53.467 [Save-file-task-273] ERROR b.c.s.FileManager: Error at saveToFile, storageFile=/Users/JMH/Library/Application Support/Bisq/btc_mainnet/db/TradeStatistics2Store java.lang.RuntimeException: java.lang.OutOfMemoryError: Java heap space at bisq.common.storage.FileManager.saveToFile(FileManager.java:205) at bisq.common.storage.FileManager.saveNowInternal(FileManager.java:186) at bisq.common.storage.FileManager.lambda$new$0(FileManager.java:81) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1135) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:844) Caused by: java.lang.OutOfMemoryError: Java heap space

ManfredKarrer commented 5 years ago

@jason-me How much RAM do you have. Is it a VM? About 500 MB is min. required RAM

ghost commented 5 years ago

@ripcurlx wrote:

Does it work for you again after a restart? Just want to make sure if this is an issue that occurs after client runs for a long time (maybe a small memory leak somewhere)

v0.9.1/Debian/8GB RAM I had a similar issue some days ago with client running since several days. It looked indeed like a small memory leak. Restarting worked. (Sorry I didn't investigate more).

jason-me commented 5 years ago

If I recall correctly it worked after a shutdown and restart. My apologies for missing your responses here earlier.

ripcurlx commented 5 years ago

Closing as complete - Still I'll have performance optimizations and memory profiling on my TODO list for the next couple of months.

peterzen commented 5 years ago

I'm getting the same error in 1.1.5 (release) after running for a couple minutes (have 1 active offer running), it reproduces upon every restart.

Sep-08 14:01:47.036 [JavaFX Application Thread] INFO  b.c.p.p.PriceFeedService: Received new MarketPrice(currencyCode=USD, price=10416.53, ti
mestampSec=1567951219268, isExternallyProvidedPrice=true) from provider http://ceaanhbvluug4we6.onion/ after 0.857 sec. 
Sep-08 14:02:39.395 [JavaFX Application Thread] INFO  b.c.p.f.FeeService: BTC tx fee: txFeePerByte=10 
Sep-08 14:02:49.199 [JavaFX Application Thread] INFO  b.c.p.p.PriceFeedService: request from provider http://44mgyoe2b6oqiytt.onion/ 63.02 se
c. after last request 
Sep-08 14:02:50.563 [JavaFX Application Thread] INFO  b.c.p.p.PriceFeedService: Received new MarketPrice(currencyCode=USD, price=10393.01, ti
mestampSec=1567951309348, isExternallyProvidedPrice=true) from provider http://ceaanhbvluug4we6.onion/ after 1.363 sec. 
Sep-08 14:03:39.178 [Save-file-task-622] ERROR b.c.s.FileManager: Error in saveToFile toProtoMessage: TradeStatistics2Store, /home/peter/.loc
al/share/Bisq/btc_mainnet/db/TradeStatistics2Store 
Sep-08 14:03:39.182 [Save-file-task-622] ERROR b.c.s.FileManager: Error at saveToFile, storageFile=/home/peter/.local/share/Bisq/btc_mainnet/db/TradeStatistics2Store java.lang.RuntimeException: java.lang.OutOfMemoryError: Java heap space
        at bisq.common.storage.FileManager.saveToFile(FileManager.java:209)
        at bisq.common.storage.FileManager.saveNowInternal(FileManager.java:190)
        at bisq.common.storage.FileManager.lambda$new$0(FileManager.java:81)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1135)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        at java.base/java.lang.Thread.run(Thread.java:844)
Caused by: java.lang.OutOfMemoryError: Java heap space
              total        used        free      shared  buff/cache   available
Mem:        1009144      687624       88232       26104      233288      154596
Swap:       1048572        5388     1043184

System: Ubuntu 18.04 x64, 1GB RAM

peterzen commented 5 years ago

On my end, setting _JAVA_OPTIONS="-Xmx512m" fixed the problem.

Rowdster commented 4 years ago

@peterzen this mem change worked for me as well, it seems.

chimp1984 commented 4 years ago

@peterzen @Rowdster Which OS did you use? Did you run in a VM?

Rowdster commented 4 years ago

@chimp1984 Running in Windows 10 on a low resource environment, celeron mobile chipset, 5GB ram. That's running in a VM on synology diskstation 718+

Bisq generally runs, but the UI always becomes unresponsive over time. Typically a black screen, or just won't redraw. The app is still running though, processing orders, but when I need to use it, I have to crash it and restart it.

I have a long outstanding bug here on the black screen issue, but I think I will just re-file it as "UI non-responsive after running for some time"

chimp1984 commented 4 years ago

Seems VM is too weak from CPU resources... Can you try to use a Linux instead of Windows? Less OS overhead...

Rowdster commented 4 years ago

Unfortunately, the UI freezing is more about being in a VM and using remote desktop. I got really close on running bisq out of a linux container but remote access options in Linux are pretty terrible in my experience. I went through the gamut of xwindows, VNC, and even Windows RD to Linux. I have a high dpi monitor which makes things even worse.

Rowdster commented 4 years ago

Ubuntu was my initial goal. FWIW the state of remote access is abysmal on Linux. Ridiculously, you can't even get basic remote access options, even Xwindows, reliably if you want to do something like use Ubuntu 19. because even getting DISPLAY to set and work correctly can be broken.

peterzen commented 4 years ago

I've been running bisq in a remote Ubuntu VM and accessing it over VNC for almost 2 years without any issues. (Smallest VPS size, 1G RAM.)

On Fri, 20 Dec 2019, 00:02 RogueCoder, notifications@github.com wrote:

Ubuntu was my initial goal. FWIW the state of remote access is abysmal on Linux. Ridiculously, you can't even get basic remote access options, even Xwindows, reliably if you want to do something like use Ubuntu 19. because even getting DISPLAY to set and work correctly can be broken.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/bisq-network/bisq/issues/2132?email_source=notifications&email_token=ABM3FZAKZJGPQNT43HK3A73QZP4PZA5CNFSM4GKTQTV2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEHLKOVA#issuecomment-567715668, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABM3FZD6WUEUJEOFW2AUILDQZP4PZANCNFSM4GKTQTVQ .

Rowdster commented 4 years ago

That's good to know @peterzen . I don't think this is a resource issue for the heap. Windows 10 is running much lower memory now with your change on bisq and doing very well. The UI freezing is a remote access issue in windows 10. I would love to switch to Ubuntu for remote access, and am willing to keep trying, but have some tedious issues with hdpi access.

peterzen commented 4 years ago

IIRC the GDK_SCALE envvar gets picked up correctly by Bisq, i.e. you can scale the UI with GDK_SCALE=2.

Rowdster commented 4 years ago

That... could be very helpful. :-)