= NDS (Network Data Server) = The NDS2 Server runs on megatron. It reads the 40m frames and serves them up through nds40.ligo.caltech.edu at port 31200 === How to Install the NDS2 client === Its best to do this in python, within a [[https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html | anaconda environment]] dedicated to this purpose. e.g. {{{ conda env create --name LIGO conda activate LIGO conda install numpy scipy matplotlib pandas astropy jupyterlab nodejs conda install -c conda-forge python-nds2-client }}} Example jupyter notebook to get 40m data: [[attachment:plotSeismicData.ipynb]] === How to debug the NDS2 Server on Megatron === The NDS2 process is handled by the user '''nds2mgr''', so don't try debuggin as controls. {{{ ~>sudo su nds2mgr nds2mgr@megatron:/home/controls$ cd nds2mgr@megatron:~$ cd nds2-megatron/ nds2mgr@megatron:~/nds2-megatron$ make -f test_restart make: 'restart_stamp' is up to date. nds2mgr@megatron:~/nds2-megatron$ rm restart_stamp nds2mgr@megatron:~/nds2-megatron$ make -f test_restart echo "about to restart" about to restart sudo /etc/init.d/nds2 restart Shutting down nds2: Starting nds2: /usr/bin/nds2 already running. }}} This seems to be weird, in that the restart is ambiguous. Recently, I have been doing: {{{ sudo /etc/init.d/nds2 stop sleep 20 sudo /etc/init.d/nds2 start }}} which behaves with more rational error messages and usually works. Sometimes, if people have been hammering the server or if there's another kind of hangup, you may run '''htop''' and see that one nds2 thread is using up near 100% of a CPU. Then its time to kill it with seriousness: {{{ sudo pkill -9 nds2 }}} and then rerun the 'make -f test_restart' as usual [[https://wiki-40m.ligo.caltech.edu/How_To/Restart_nds2|Here]] is another restart procedure updated on June 13, 2024.