-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
created debugging-harperdb.md file #117
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@kriszyp I'd definitely like your eyes on this as well. A lot of this stuff isn't really my wheelhouse, hence all the questions.
@Keyology In order to make this page visible in the navigation, you'll need to add it to the SUMMARY.md file
@@ -0,0 +1,44 @@ | |||
# Debugging HarperDB |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think somewhere up here we need to add some context around what kinds of debugging this is referring to. @kriszyp This information would be specifically for self-managed deployments, correct?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, this is for remote connection to servers that you have SSH access to and access to the ports.
|
||
To learn more, please visit: [HarperDB Configuration - Threads](https://docs.harperdb.io/docs/deployments/configuration#threads) | ||
|
||
In most deployments, debugging is already enabled. If it's set up, you can connect to HarperDB using Node DevTools, available via `chrome://inspect` in Chrome (click "Open dedicated DevTools for Node"). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would this be true in "most deployments" or is that referring to how we do our deployments? Not sure if this conflicts with what is in our config or not.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You are correct Jake, this is definitely not true for most deployments, it is only for our deployments, for our engineers.
In 4.4, with dev defaults on install, debug is enabled, but not with a starting port range, as is assumed in this doc.
If you are running inside a docker container, you have to enable a range of ports, which is somewhat of an elaborate process itself.
|
||
Since DevTools can only connect to one thread per port, we assign specific ports for debugging: | ||
|
||
- Main thread: Port 9229 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
https://docs.harperdb.io/docs/deployments/configuration#threads
This shows debug.port as 9249? Also it mentions startingPort, which is not in the sample config. Not sure if that's directly relevant to this, but seems like it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should update those docs to be 9229, that is much more standard. But this should be clarified that this is connects to the ports configured in the starting port range.
When debugging a specific HarperDB instance, you’ll need to SSH into the instance using port tunneling. Here's how to connect to worker threads 1 and 2 (typically, debugging the main thread isn't needed since it doesn’t handle traffic): | ||
|
||
```bash | ||
ssh -L 9230:localhost:9230 -L 9231:localhost:9231 root@cool-customer.harperdbcloud.com |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think we'd want harperdbcloud.com
examples in the public docs, but that may be my misunderstanding.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would think that potentially more interesting content/approach would be looking at different IDEs (VSCode, WebStorm, Devtools), and how to configure them, with follow-up steps for what needs to be configured for each (for example, you don't need starting range for VSCode and Webstorm, but you do for Devtools).
Unfortunately, taking a post that was intended for a complete different audience, and turning into docs, isn't a great way to write docs, sorry you got dragged into this.
@@ -0,0 +1,44 @@ | |||
# Debugging HarperDB |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, this is for remote connection to servers that you have SSH access to and access to the ports.
|
||
To learn more, please visit: [HarperDB Configuration - Threads](https://docs.harperdb.io/docs/deployments/configuration#threads) | ||
|
||
In most deployments, debugging is already enabled. If it's set up, you can connect to HarperDB using Node DevTools, available via `chrome://inspect` in Chrome (click "Open dedicated DevTools for Node"). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You are correct Jake, this is definitely not true for most deployments, it is only for our deployments, for our engineers.
In 4.4, with dev defaults on install, debug is enabled, but not with a starting port range, as is assumed in this doc.
If you are running inside a docker container, you have to enable a range of ports, which is somewhat of an elaborate process itself.
|
||
Since DevTools can only connect to one thread per port, we assign specific ports for debugging: | ||
|
||
- Main thread: Port 9229 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should update those docs to be 9229, that is much more standard. But this should be clarified that this is connects to the ports configured in the starting port range.
- And so on for additional worker threads. | ||
|
||
To debug multiple threads, you'll need to register each port in DevTools: | ||
|
||
1. In the "Connections" tab, click "Add connection." | ||
2. Add `localhost:9230`, `localhost:9231`, and any other necessary ports. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How would someone know how many threads they are using? Is there a way to get dev tools to connect to all threads without manually adding each connection?
- Run a Performance Profile: To investigate performance issues, start by running a profile for about 10-30 seconds. This will help you identify bottlenecks when analyzing the results. | ||
|
||
- Check Memory Usage: For memory-related issues, take a heap snapshot to spot any large memory allocations. You can also compare heap usage over time to track memory growth or leaks. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Lets include some links here about how to analyze a performance profile or heap snapshot results.
Hey @kriszyp @jcohen-hdb,
I created a PR to push this forward please let me know if there are any changes you would like made.