一、问题:
无窗口服务器端的openfaom数据太大,大概几GB,通过ssh -X使用paraview命令传输到本地很慢很卡怎么办?有没有更快速简单的方法
二、解决方法:
使用 ParaView 的 Client-Server 模式
ParaView 的 Client-Server 模式允许你在服务器上运行 ParaView Server (pvserver
),而在本地运行 ParaView Client。这样可以减少数据传输量,只传输必要的可视化信息而不是整个数据集。
步骤:
-
在服务器上启动 ParaView Server: 在服务器端,通过 SSH 登录并启动
pvserver
:pvserver
-
在本地启动 ParaView Client: 在本地计算机上启动 ParaView,选择
File
->Connect
,然后设置服务器连接:- 在 Hostname 中输入服务器的 IP 地址或主机名。
- 默认端口为 11111(如果使用不同端口,需要在启动
pvserver
时指定)。
-
连接到服务器: 等待大概2-4分钟左右(本人这边记录是3分半连接成功,中间可能遇到无响应),连接成功(注意没有报错的话就可以等个五分钟那样,时间比较慢。报错了看下面的解决方法),数据处理和可视化计算将在服务器上进行,结果通过网络传输到本地显示,从而减小了传输的数据量。
三、中间遇到的问题:
问题1:
连接上后,等待几分钟后,paraview错误提示 "Server DISPLAY not accessible!" 表示服务器端的 ParaView 无法访问显示设备,通常这是由于服务器上没有图形界面或图形界面没有正确配置导致的。在这种情况下,远程渲染会被禁用,无法正常显示图形界面。
本人这边paraview连接上后,服务器终端就显示(显示连接成功)
能够看到左下角显示了paraview的目录了,说明连接成功。
解决方法:使用 Xvfb
使用 Xvfb 创建虚拟显示环境,这是一个通用的方法,可以解决许多图形界面问题。
步骤:
-
安装 Xvfb: 以 Ubuntu 为例:
sudo apt-get install xvfb
2.启动虚拟显示: 创建虚拟显示
Xvfb :1 -screen 0 1024x768x24 &
export DISPLAY=:1
3.启动 ParaView Server: 在虚拟显示环境中启动 pvserver
:
pvserver
至此成功解决。
以后再链接方法:
可以直接在~/.bashrc中加入export DISPLAY=:1 然后在服务器端输入pvserver,然后客户端就可以用paraview连接了。亲测可用。(Xvfb :1 -screen 0 1024x768x24 & 这个命令一直在服务器后台运行)
问题2:paraview链接服务器端paraview报错
user@llms01:~$ pvserver
Waiting for client...
Connection URL: cs://llms01:11111
Accepting connection(s): llms01:11111
Client connected.
X Error of failed request: BadAlloc (insufficient resources for operation)
Major opcode of failed request: 152 (GLX)
Minor opcode of failed request: 5 (X_GLXMakeCurrent)
Serial number of failed request: 0
Current serial number in output stream: 37
解决方法:执行以下两行即可解决
Xvfb :1 -screen 0 1024x768x24 &
export DISPLAY=:1
注意:其中第一条命令的 & 表示挂在后台运行,就算杀掉终端也会运行。建议使用无后台版本的。不加上&。
这时候如果重复执行第一条命令会提示已经执行过了。