Ubuntu服务器参数优化

确保 IP 转发已启用

确保内核启用了 IP 转发功能。可以通过以下命令启用:

1
sudo sysctl -w net.ipv4.ip_forward=1

为了使设置永久生效,可以编辑 /etc/sysctl.conf 文件,添加以下内容:

1
net.ipv4.ip_forward = 1

然后运行以下命令应用配置:

1
sudo sysctl -p

增加sudo权限

sudo vim /etc/sudoers

1
user ALL=(ALL:ALL) NOPASSWD: ALL

配置高并发服务器调小TCP协议的time_wait时间

查看网络节点的tcp连接状态,如果发现系统存在大量的TIME_WAIT状态的连接,通过调整内核参数解决:
然后执行以下命令让参数生效: sudo /sbin/sysctl -p

limits.conf 和sysctl.conf区别在于limits.conf是针对用户,而sysctl.conf是针对整个系统参数配置

linux下ulimit参数调整

sudo vim /etc/security/limits.conf

1
2
3
4
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535

临时配置

1
2
ulimit -SHn 65536
ulimit -n

limits.conf 和sysctl.conf区别在于limits.conf是针对用户,而sysctl.conf是针对整个系统参数配置

改变系统最大打开文件数,需要修改 /etc/sysctl.conf 文件

sudo vim /etc/sysctl.conf

1
fs.file-max = 1048576

设置服务最大文件句柄数:

sudo vim /etc/systemd/system.conf

1
DefaultLimitNOFILE=1048576

配置网络参数修改

sudo vim /etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service

1
2
[Service]
TimeoutStartSec=5sec

Linux 操作系统参数

系统全局允许分配的最大文件句柄数:
2 millions system-wide

1
2
3
sudo sysctl -w fs.file-max=2097152
sudo sysctl -w fs.nr_open=2097152
sudo echo 2097152 > /proc/sys/fs/nr_open

TCP 协议栈网络参数

1
2
3
sudo sysctl -w net.core.somaxconn=32768
sudo sysctl -w net.ipv4.tcp_max_syn_backlog=16384
sudo sysctl -w net.core.netdev_max_backlog=16384

可用知名端口范围:

1
sudo sysctl -w net.ipv4.ip_local_port_range='1000 65535'

TCP Socket 读写 Buffer 设置:

1
2
3
4
5
6
7
8
9
sudo sysctl -w net.core.rmem_default=262144
sudo sysctl -w net.core.wmem_default=262144
sudo sysctl -w net.core.rmem_max=16777216
sudo sysctl -w net.core.wmem_max=16777216
sudo sysctl -w net.core.optmem_max=16777216

#sysctl -w net.ipv4.tcp_mem='16777216 16777216 16777216'
sudo sysctl -w net.ipv4.tcp_rmem='1024 4096 16777216'
sudo sysctl -w net.ipv4.tcp_wmem='1024 4096 16777216'

TCP 连接追踪设置

1
2
3
sudo sysctl -w net.nf_conntrack_max=1000000
sudo sysctl -w net.netfilter.nf_conntrack_max=1000000
sudo sysctl -w net.netfilter.nf_conntrack_tcp_timeout_time_wait=30

Failed to allocate directory watch: Too many open files

解决办法:
vim /etc/sysctl.conf
sudo vim /etc/sysctl.conf


1
2
3
fs.file-max = 1048576
fs.inotify.max_user_instances=25120
fs.inotify.max_user_watches=262144

生效

sudo sysctl -p

ubuntu中文乱码问题解决

安装字体命令(中文字体)

1
2
3
4
5
6
7
sudo apt update && sudo apt upgrade -y

sudo apt install language-pack-zh-hans -y

sudo apt install fonts-wqy-zenhei fonts-wqy-microhei fonts-noto-cjk -y
sudo apt install fonts-wqy-zenhei fonts-wqy-microhei -y -y
sudo apt install fonts-wqy-zenhei fonts-wqy-microhei fonts-noto-cjk fonts-arphic-ukai fonts-arphic-uming fonts-droid-fallback -y

环境变量设置

Ubuntu默认的中文字符编码为zh_CN.UTF-8

输入命令:sudo vim /etcenvironment
修改内容如下:

1
2
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
LANG="zh_CN.UTF-8"

设置环境变量

1
2
3
sudo locale-gen zh_CN.UTF-8   # 生成中文 locale
sudo update-locale LANG=zh_CN.UTF-8 # 设置系统默认语言
export LANG=zh_CN.UTF-8

Ubuntu系统配置中文显示

(Chrome开机自启动)Ubuntu 20.04 上安装 Google Chrome 网络浏览器

Chrome开机自启动

使用 systemd 创建服务

创建一个新的服务文件,输入命令 sudo nano /etc/systemd/system/google-chrome.service

在文件中输入以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[Unit]
Description=Google Chrome Service
After=network.target

[Service]
ExecStart=/usr/bin/chromium-browser --kiosk --noerrdialogs --start-fullscreen "http://192.168.0.190/hmi/dsfq"
User=root
Group=root
Environment="DISPLAY=:0"
LimitNOFILE=65536
Restart=always
RestartSec=5s

[Install]
WantedBy=graphical.target # 只有当系统准备好进入图形界面时,该服务才会被启动

保存并退出编辑器,终端输入以下命令启用并启动服务:

1
2
3
4
5
sudo systemctl daemon-reload
sudo systemctl enable google-chrome.service
sudo systemctl restart google-chrome.service

sudo systemctl status google-chrome.service

创建桌面启动文件

这种方法适合需要自定义启动参数的场景:

  1. 打开终端,运行以下命令创建启动文件:
1
2
3
mkdir -p ~/.config/autostart
cd ~/.config/autostart
nano chromium.desktop
  1. 在文件中输入以下内容:
1
2
3
[Desktop Entry]
Type=Application
Exec=/usr/bin/chromium-browser --start-maximized --disable-infobars --kiosk "http://192.168.0.190/hmi/dsfq"
  • --start-maximized:启动时最大化窗口。
  • --kiosk:全屏模式。
  • "http://www.example.com":替换为你希望打开的网页地址。

Ubuntu AMD的CPU安装

执行下面的步骤,在你的 Ubuntu 系统上安装 Chrome 浏览器:

1.1 下载 Google Chrome

使用Ctrl+Alt+T快捷键或者点击终端图标,打开你的终端。

使用wget来下载 Google Chrome .deb 软件包:

1
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb

1.2 安装 Google Chrome

在 Ubuntu 系统上安装软件包需要管理员权限。以 sudo 用户身份在你的系统上运行下面的命令来安装 Chrome .deb软件包:

1
sudo apt install ./google-chrome-stable_current_amd64.deb

在被提示时,输入你的密码,安装将会开始。

此时,你已经在你的 Ubuntu 系统上安装好了 Chrome。

Ubuntu ARM的CPU安装

  • chrome安装(root安装)

    1
    sudo snap install chromium
  • 浏览器字体安装

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    sudo apt update && sudo apt upgrade -y
    sudo apt install language-pack-zh-hans -y

    sudo apt update && sudo apt upgrade -y

    sudo apt install language-pack-zh-hans -y

    sudo apt install fonts-wqy-zenhei fonts-wqy-microhei fonts-noto-cjk -y
    sudo apt install fonts-wqy-zenhei fonts-wqy-microhei -y -y
    sudo apt install fonts-wqy-zenhei fonts-wqy-microhei fonts-noto-cjk fonts-arphic-ukai fonts-arphic-uming fonts-droid-fallback -y

    sudo locale-gen zh_CN.UTF-8 # 生成中文 locale
    sudo update-locale LANG=zh_CN.UTF-8 # 设置系统默认语言

    export LANG=zh_CN.UTF-8
    sudo apt install fonts-wqy-zenhei fonts-wqy-microhei fonts-noto-cjk -y

环境变量设置

Ubuntu默认的中文字符编码为zh_CN.UTF-8

输入命令:sudo vim /etcenvironment
修改内容如下:

1
2
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
LANG="zh_CN.UTF-8"

设置环境变量

1
2
3
sudo locale-gen zh_CN.UTF-8   # 生成中文 locale
sudo update-locale LANG=zh_CN.UTF-8 # 设置系统默认语言
export LANG=zh_CN.UTF-8

Ubuntu系统配置中文显示

OPC数据采集DCOM配置指南-转载

OPC数据采集DCOM配置指南

https://rtcloud.ipcsun.com/cms/docs/reader/OPC数据采集DCOM配置指南(500)#Bmc1Q-PGbk

开放平台通信Open Platform Communications)简称OPC
,旧称“用于过程控制OLE
”,是用于工业自动化
的一种通信标准。设备制造商(特别是PLC)如果遵从这一标准,则实时数据可提供给OPC
Server,上位机的软件(称为OPC Client)直接访问OPC Server就可以获取到设备数据,从而对不同的设备的差异透明化。

1996年首次发布后,由OPC基金会
维护这一标准。[1]
2011年名字从“用于过程控制的OLE”改为“开放平台通信”,[2]
以反映OPC已经从过程控制领域推广到智能建筑离散制造
等。OPC也超出了传统的OLE技术
,采用了.NET FrameworkXML
、OPC基金会的二进制编码TCP格式。

起源与使用

开放平台通信(OPC)规范是以微软
所开发,针对Microsoft Windows
操作系统下的对象链接与嵌入
(DDE)、组件对象模型
(COM)及Distributed COM
(DCOM)技术为基础。规格定义了过程控制及工厂自动化需要的对象接口
方法,目的是为了达到互操作性
。最常见的OPC规范是读写实时资料用的OPC资料存取
(OPC DA)。许多制造商提到OPC时,所指的其实就是OPC Data Access。OPC DA在初版发行起,已有三个主要的版本,所有版本都向后兼容。第一版OPC
DA的客户端仍可以存取第三版OPC DA的服务器,各版本会增加机能,但原有的机能仍然要支持。不过若客户端允许资料写入,就不支持旧版的服务器,例如DA
3 相同的客户端不一定支持DA 1.0的服务器。

除了OPC
DA规范外,OPC基金会也维护OPC Historical Data Access
(OPC HDA)的规范。OPC DA存取的是实时的资料,OPC HDA允许存取及检索已存档的历史资料。

OPC基金会还维护OPC Alarms and
Events的规范,定义警告及事件型式的消息信息,类似变量状态及状态管理的消息[3]

设计

开放平台通信的设计目的是提供Windows-based软件应用程序以及程序控制硬件共同的桥梁。规范中定义从车间楼层设备存取现场设备的一致性方法。不论资料的来源及类型如何,方法都是不变的。某一硬件设备的OPC服务器提供OPC
Client存取资料的方式,和其他设备的OPC服务器提供的方式都是一样的。目的是为了减少硬件设计者、软件合作厂商、SCADA
HMI
厂商花在处理这类问题,创建相关接口上的心力。只要硬件制造商针对其硬件设备开发了OPC服务器,他们的工作就已经完成,任何设备都可以存取其信息,只要SCADA制造商开发了OPC
client,就可以存取OPC相同的硬件。

OPC服务器提供方法给许多不同的软件包(前提是这些软件要是OPC
client),让程序控制设备(例如PLCDCS
)来存取资料。传统上,若软件需要从一个设备存取资料,需要撰写客制的界面(驱动程序)。OPC的目的就是定义共同的接口,只要开发一次,任何SCADA、人机界面或是电脑软件都可以用此接口存取资料。

OPC规格没有限制服务器提供哪些资料给程序控制设备。OPC服务器可以发送MCU的内部温度,也可以发送某一地区目前的温度。

只要某个设备已经有了OPC服务器,其他可以作为OPC
client的软件就可以存取此一设备。OPC服务器使用微软的OLE技术(也称为组件对象模型,COM)来和client通信。COM技术提供在软件应用程序以及程序硬件之间即时的资料交换。

OPC规范中有一些已经出版发行,其他一部分只开放给OPC协会的成员,没有一家公司拥有OPC规范,任何一家公司就算不是OPC协会的成员,也可以开发OPC服务器,非成员不一定要使用到最新的规范。任何人都可以集成OPC产品,系统集成商也不需要属于任何组织。每家需要OPC产品的公司可以自行决定其产品是否要经过认证,其系统集成商是否有需要接受必要的训练。

未来

OPC UA(OPC Unified Architecture)已经有对应的规范,并且其早期Adopters版本已经部署并且进行测试。OPC
UA可以用JavaMicrosoft .NETC语言
实现,避免了早期OPC版本需要用Microsoft Windows
为基础的系统才能实现的问题。UA结合了现有OPC接口的功能,又加入了像XML
Web Services
等技术,来支持高阶的制造执行系统
(MES)及企业资源计划(ERP)等应用。

OPC组织和MTConnect
组织在2010年9月16日宣布会彼此合作,让两个标准之间有一致性及互操作性[4]

分布式COM(DCOM)

是一项Microsoft技术,可为Windows应用程序提供在LAN(局域网),WAN(广域网)或Internet(互联网)
连接上从一台计算机连接到另一台计算机的能力。例如,DCOM允许OPC客户端应用程序从一台计算机与另一台计算机上的OPC服务器通信。

img

DCOM

DCOM作为上世纪主流分布式应用技术占据了企业应用的巨大市场份额,导致了目前自动控制领域设备(DCS,PLC等)普遍支持OPC数据采集标准,但由于DCOM基于微软Windows操作系统的二进制标准,底层实现技术封闭,与Windows操作系统安全机制紧密耦合,DCOM配置繁琐,且过程极易失败等诸多问题也普遍为业界所诟病。

OPC DOM 配置方案

RtCloud(实时云平台)总结出一套行之有效的OPC DCOM配置解决方案。

如何顺利的配置OPC相关的DCOM?首先需要了解OPC DA的工作模式及相关程序(组件、服务)以及Windows的DCOM组件工作机制,然后才能正确的配置OPC
DCOM。

OPC DCOM 的工作机制

Client和Server在同一台计算机

当Client和Server在同一台计算机时,首先,Client向OpeEnum组件(CLSID:
{13486D51-4821-11D2-A494-3CB306C10000})发起查询本机已注册的所有OPC服务器(包括2.0标准(GUID :
{63D5F431-CFE4-11D1-B2C8-0060083BA1FB})的及1.0标准(GUID : {63D5F430-CFE4-11d1-B2C8-0060083BA1FB})
的服务器。OpcEnum组件负责返回所有已注册的OPC服务器信息。

第二步,OPC Client获取已注册OPC服务器信息后,确定需要连接的OPC服务器,并通过ConnectionPoint接口及AdviseSink接口获取服务器的各种配置信息、数据项(Tag)实时数据及其它通知(如服务器关闭)。

img

OPC Clientt/Server安装在同一台计算机

Client和Server在不同的计算机

img

OPC Client/Server安装在不同的计算机

首先,OPC客户端软件访问OPC服务器所在计算机上注册的OPCEnum.exe,查询服务器所在计算机上已注册的所有OPC服务器。OpcEnum组件负责返回所有已注册的OPC服务器信息。

第二步,OPC Client获取已注册OPC服务器信息后,确定需要连接的OPC服务器,并通过ConnectionPoint接口及AdviseSink接口获取服务器的各种配置信息、数据项(Tag)实时数据及其它通知(如服务器关闭)。

在简单了解OPC客户端与服务器的通讯过程后,可以得出一个结论,无论是在同一台计算机还是不同的计算机,OPC客户端和服务器之间的通讯主要涉及三个部分:
OPC ClientOPCEnumOPC Server

步骤1 配置访问账号

配置方案要求在采集侧(OPC客户端)和OPC服务端同时配置一个就有相同账号名称和密码的具有DCOM访问权限的账号,这里假设配置的账号名称为OPCUser,密码为OPCUser*。

调用Windows账号管理器,控制台命令:lusrmgr.msc

img

特别提示

账号要在OPC服务计算机和OPC客户端计算机同样配置

步骤2 设置系统和默认DCOM访问权限

调用DCOM配置管理器,控制台命令:dcomcnfg

img

img

img

img

确认 SystemOPCUser两个账号具有本地和远程访问的权限。

img

img

同样确认 SystemOPCUser两个账号具有本地和远程访问的权限。

img

img

确认 SystemOPCUser两个账号具有本地和远程访问的启动和激活的权限。

img

img

同样确认 SystemOPCUser两个账号具有本地和远程访问的启动和激活的权限

特别提示

上述设置系统和默认DCOM访问权限需要在OPC服务计算机和OPC客户端采集计算机同样进行。

步骤3 OPC服务器设置 OPCEnum 的DCOM访问权限

在OPC服务计算机调用DCOM配置管理器,控制台命令:dcomcnfg

img

img

img

img

img

img

步骤4 OPC服务器设置 OPCDA服务 的DCOM访问权限

在OPC服务计算机调用DCOM配置管理器,控制台命令:dcomcnfg

img

img

img

提示

上述DCOM设置完成后,应重启OPCEnum和OPC服务,使配置生效

步骤5 重启OPCEnum 和OPC服务

在OPC服务计算机调用服务配置管理器,控制台命令:services.msc

img

img

步骤6 设置网络访问安全策略

调用服务配置管理器,控制台命令:secpol.msc

img

img

img

img

特别提示

上述安全策略设置需要在OPC服务计算机和OPC客户端采集计算机同样进行。

步骤7 OPC服务计算机网络防火墙设置

调用防火墙管理器,控制台命令:firewall.cpl

img

配置DCOM 135端口的入站规则

img

img

img

img

配置OPCEnum 的入站规则

img

img

img

img

img

配置OPC 服务的入站规则

img

img

img

img

img

配置OPC 服务的出站规则

img

步骤8 OPC客户端采集计算机网络防火墙设置

配置DCOM 135端口的入站规则

同上述OPC服务计算机135端口的入账规则配置流程。

配置OPC 客户端(采集程序)的入站规则

img

img

img

img

img

img

配置OPC 客户端(采集程序)的出站规则

img

完成

OPC数据采集DCOM配置-问题解决

KEPServerEX 配置 OPC DA 通信
https://www.drsanwujiang.com/kepserverex-configure-opc-da-communication/#toc-head-1

DCOM配置参考,OPC Server端配置、OPC DA客户端浏览远程OPC Server
https://blog.csdn.net/qq_28768521/article/details/125782898

OpcEnum交互式用户不可选解决办法

https://blog.csdn.net/xiaochenXIHUA/article/details/117082617

1
2
3
4
5
6
7
8
9
重新注册OpcEnum.exe
①首先检查OpcEnum.exe存在哪个文件夹;

②如果OpcEnum.exe存在System32目录下,则在CMD中执行以下命令

C:\Windows\System32\OpcEnum.exe /regserver
③如果OpcEnum.exe存在SysWOW64目录下,则在CMD中执行以下命令

C:\Windows\SysWOW64\OpcEnum.exe /regserver

DCOM配置 OpcEnum 位置在此计算机上运行灰色无法选择

https://blog.csdn.net/weixin_45134977/article/details/126245825

1
2
3
4
5
6
7
问题描述:
在进行OPCDA消息抓包测试时,需要在俩台主机配置DCOM,配置过程发现服务器(Win10 专业版)的OpcEnum组件属性位置配置种在此计算机上运行应用选项无法选择。

解决办法:
Win+R 以管理员运行命令提示行,执行命令
mmc comexp.msc /32
亲测对本人所遇问题有效
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
您好!
我们了解到您关于windows 10DCOM如何配置的问题。
您可以按照以下步骤尝试下:

1.安装OPC运行库
KEPServer集成了OPC运行库,所以不需要单独安装
OPC Core Components Redistributable.msi 链接: https://pan.baidu.com/s/1gU7_2e1Ye_qW1saObYV6xQ 密码: 9evk

2.创建用户并赋予访问权限 :计算机管理
创建用户:
OPCUser
123456
添加到DCOM组

3.防火墙关于 DCOM 和 OPC 的规则 :高级安全 Windows Defender 防火墙

开放 DCOM 访问 :DCOM(wmi)启用
135端口:只有一个计算机不需要设置
创建 OPC 程序规则 :允许程序 OPCEnum
位置:"C:\Windows\SysWOW64\OpcEnum.exe"
添加 OPC 服务器程序的规则:允许程序 KEPServer的server_runtime
位置:"C:\Program Files (x 86) \Kepware\KEPServerEX 6\server_runtime.exe"


4.配置 DCOM 安全:组件服务
配置 COM 的安全设置:我的电脑--COM属性--安全--访问、激活 配置
OPCENUM 的安全设置 :OpcEnum的安全选项
配置 OPC 服务器的安全设置 :KEPServer的安全选项

5.配置本地安全策略 :
本地安全策略 本地策略--网络访问--匿名 :启用

希望以上的信息可以帮助到您

DCOM access, so as to avoid such exceptions. [0x00000005

Caused by: org.jinterop.dcom.common.JIException: Access is denied, please check whether the [domain-username-password]
are correct. Also, if not already done please check the GETTING STARTED and FAQ sections in readme.htm. They provide
information on how to correctly configure the Windows machine for DCOM access, so as to avoid such
exceptions. [0x00000005] opc da远程连接提示错误,如何解决

配置 Windows 系统权限

  • 打开注册表编辑器(regedit),导航到:
    • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
  • 创建或修改一个 32 位的 DWORD 值,名称为 LocalAccountTokenFilterPolicy,将其值设置为 1
  • 打开“本地安全策略”(secpol.msc),在“本地策略 -> 安全选项”中找到:
    • “网络访问:本地账户的共享和安全模型”,并将其属性设置为“经典:对本地账户进行身份验证,不改变其本来身份”
  1. 查DCOM权限:

    • 打开dcomcnfg.exe(组件服务)。

    • 导航到“组件服务”->“计算机”->“我的电脑”->“DCOM 配置”。

    • 找到您尝试访问的特定 DCOM 应用程序或对象。

    • 右键单击并选择“属性”。

    • 转到“安全”选项卡。

    • 检查“启动和激活权限”以及“访问权限”设置。

      确保尝试连接的用户或组具有适当的权限(启动和激活权限通常为“本地启动”和“本地激活”,访问权限通常为“本地访问”)。

    • 如果需要,添加用户或组并授予必要的权限。

  2. 4. 检查注册表权限:

    • 打开regedit.exe

    • 导航至HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\OLE

    • 右键单击“OLE”键并选择“权限”。

    • 验证尝试连接的用户或组的权限。

      如有必要,授予“完全控制”权限。

  3. 5. 检查LocalAccountTokenFilterPolicy

    • 导航至HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
    • 检查名为的 DWORD 值LocalAccountTokenFilterPolicy
    • 如果存在,请确保将其值设置为1。如果不存在,请创建它并将其值设置为1。此设置对于启用对目标计算机上某些资源的远程访问非常重要。
1
2
3
4
5
6
7
8
9
您无权访问本地 Windows 注册表,因此客户端无法将服务器的 ProgID 转换为 CLSID。请确保您以足够的权限(例如,以管理员用户身份)运行该应用程序。

或者,您可以只使用服务器的 CLSID 配置连接,这样就不需要注册表了。

OPC 客户端实际上应该使用服务器计算机上运行的 OpcEnum 服务来执行 ProgID 到 CLSID 的转换。可能是该服务不可用,或者 Utgard 只尝试访问注册表(我自己也不了解 Utgard)。如果您没有在客户端计算机上安装服务器,那么基于注册表的 ProgID 到 CLSID 转换无论如何都会失败,因为本地 Windows 注册表中没有该信息。最糟糕的情况是 Utgard 会尝试打开远程 Windows 注册表,但这种情况很少成功(或者您需要确保已单独启用该功能)。

请注意,由于我不了解 Utgard,我只是猜测它正在尝试哪些策略。然而,仅使用 CLSID 会绕过整个转换部分,这就是你的问题所在。

E:考虑到您的其他客户端可以毫无问题地连接,我怀疑 Utgard 根本没有尝试使用 OpcEnum。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
OPC 客户端实际上应该使用服务器计算机上运行的 OpcEnum 服务来执行 ProgID 到 CLSID 的转换。
可能是该服务不可用,或者 Utgard 只尝试访问注册表(我自己也不了解 Utgard)。
如果您没有在客户端计算机上安装服务器,那么基于注册表的 ProgID 到 CLSID 转换无论如何都会失败,因为本地 Windows 注册表中没有该信息。
最糟糕的情况是 Utgard 会尝试打开远程 Windows 注册表,但这种情况很少成功(或者您需要确保已单独启用该功能)。

请注意,由于我不了解 Utgard,我只是猜测它正在尝试哪些策略。然而,仅使用 CLSID 会绕过整个转换部分,这就是你的问题所在。

E:考虑到您的其他客户端可以毫无问题地连接,我怀疑 Utgard 根本没有尝试使用 OpcEnum。

我会把你的答案设为已采纳答案,因为我听说这确实是一个常见问题,而且它能帮助很多人。
不过,我按照 claptrap 的建议,再次修改了 DCOM 设置,解决了这个问题。
这次我将“位置”设置为“从以下计算机‘myComputerName’运行应用程序”,
而不是“从此计算机运行应用程序”。
不知道为什么,但现在一切正常。


我也像你说的那样使用了 CLSID!但这本身并没有消除异常。我还必须按照我之前的评论中解释的那样更改 DCOM。

我遇到了同样的错误,并通过将以下补丁应用到注册表解决了该问题:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
创建或修改 32 位 DWORD:LocalAccountTokenFilterPolicy
将值设置为:1

系统启用了 SELinux 或 AppArmor,限制 MongoDB 的访问权限。导致服务 mongod.service 启动失败

当系统启用了 SELinux 或 AppArmor 限制 MongoDB 的访问权限导致服务启动失败时,可以按照以下方法解决:

1. 检查日志文件

  • 查看 MongoDB 的日志文件,通常位于 /var/log/mongodb/mongod.log,日志中会记录具体的错误信息。
  • 检查系统日志,使用命令 journalctl -u mongod.service 查看服务启动时的详细日志。

2. 检查权限设置

  • 检查数据目录权限:确保 MongoDB 数据目录(如 /var/lib/mongodb)的所有者和组为 mongodb 用户,并且具有读写权限。可以使用以下命令修改权限:

    1
    2
    sudo chown -R mongodb:mongodb /var/lib/mongodb
    sudo chmod -R 755 /var/lib/mongodb
  • 检查日志目录权限:确保日志文件路径(如 /var/log/mongodb)也具有正确的权限。

3. 检查 SELinux 和 AppArmor 配置

  • 临时禁用 SELinux:可以临时禁用 SELinux 来测试是否是 SELinux 导致的问题。使用命令 sudo setenforce 0 将 SELinux
    设置为宽容模式。如果禁用后服务可以正常启动,说明是 SELinux 配置问题。
  • 检查 SELinux 策略:查看 SELinux 的日志文件(如 /var/log/audit/audit.log),查找与 MongoDB 相关的拒绝访问记录。
  • 配置 SELinux 策略:根据日志中的拒绝记录,可以使用 audit2allow 工具生成相应的 SELinux 策略模块,并将其加载到系统中。
  • 检查 AppArmor 配置:如果系统使用 AppArmor,检查 MongoDB 的 AppArmor 配置文件(通常位于
    /etc/apparmor.d/usr.sbin.mongod),确保配置文件中允许 MongoDB 访问必要的文件和目录。

4. 检查其他常见问题

  • 检查端口占用:确保 MongoDB 默认端口(27017)没有被其他进程占用。可以使用命令 netstat -tuln | grep 27017 检查端口占用情况。
  • 检查配置文件:检查 MongoDB 的配置文件(如 /etc/mongod.conf),确保配置文件中的路径和参数设置正确。

5. 重新启动服务

完成上述检查和修改后,重新启动 MongoDB 服务:

1
sudo systemctl restart mongod

然后检查服务状态:

1
sudo systemctl status mongod

如果服务仍然无法启动,可以继续查看日志文件和系统日志,进一步排查问题

(CPU)arm vs AArch64 vs amd64 vs x86_64 vs x86

(CPU) arm vs AArch64 vs amd64 vs x86_64 vs x86

Linux不全是用x86_64的说法,Fedora RHEL 等用x86_64,Debian、Ubuntu 中用amd64。

以下的表将为你总结每个字符串所代表的意义:

CPU 架构 描述
x86_64 /x86/amd64 64 位 AMD/英特尔 CPU 的别称
AArch64 /arm64/ARMv8/ARMv9 64 位 ARM CPU 的别称
i386 32 位 AMD/英特尔 CPU
AArch32 /arm/ARMv1 到 ARMv7 32 位 ARM CPU 的别称
rv64gc /rv64g 64 位 RISC-V CPU 的别称
ppc64le 64 位 PowerPC CPU,小端字节序存储

目前市场上主流的芯片架构有 X86、ARM、RISC-V和MIPS四种:

序号 架构 特点 代表性的厂商 运营机构 发明时间
1 X86 性能高,速度快,兼容性好 英特尔,AMD 英特尔 1978年
2 ARM 成本低,低功耗 苹果,谷歌,IBM,华为 英国ARM公司 1983年
3 RISC-V 模块化,极简,可拓展 三星,英伟达,西部数据 RISC-V基金会 2014年
4 MIPS 简洁,优化方便,高拓展性 龙芯 MIPS科技公司 1981年

服务器基础知识:aarch64 arm64 arm x86有什么区别

aarch64和arm64是指基于ARM架构的64位处理器,而arm是指基于ARM架构的32位处理器。x86则是指基于x86架构的处理器。

  • 架构: aarch64、arm64和arm都属于ARM架构,而x86属于x86架构。
  • 位数: aarch64和arm64是64位处理器架构,能够使用64位的寄存器和指令集。arm是32位处理器架构,使用32位的寄存器和指令集。x86可以是32位或64位处理器架构,具体取决于处理器型号。
  • 应用领域: ARM架构在移动设备(如智能手机、平板电脑)和嵌入式系统中非常常见,而x86架构主要用于桌面和服务器领域。
  • 软件兼容性: 由于架构的不同,软件在不同的架构上可能不兼容。一些软件和操作系统可能需要专门编译或适配到特定的架构上才能运行。
  • 性能和功耗: 不同的架构在性能和功耗方面可能有所差异。具体的性能和功耗特征取决于处理器的设计和实现。

CPU芯片架构(X86、ARM、RISC-V和MIPS)

CPU芯片架构(X86、ARM、RISC-V和MIPS)

目前市场上主流的芯片架构有 X86、ARM、RISC-V和MIPS四种:

序号 架构 特点 代表性的厂商 运营机构 发明时间
1 X86 性能高,速度快,兼容性好 英特尔,AMD 英特尔 1978年
2 ARM 成本低,低功耗 苹果,谷歌,IBM,华为 英国ARM公司 1983年
3 RISC-V 模块化,极简,可拓展 三星,英伟达,西部数据 RISC-V基金会 2014年
4 MIPS 简洁,优化方便,高拓展性 龙芯 MIPS科技公司 1981年
CPU 架构 描述
x86_64 /x86/amd64 64 位 AMD/英特尔 CPU 的别称
AArch64 /arm64/ARMv8/ARMv9 64 位 ARM CPU 的别称
i386 32 位 AMD/英特尔 CPU
AArch32 /arm/ARMv1 到 ARMv7 32 位 ARM CPU 的别称
rv64gc /rv64g 64 位 RISC-V CPU 的别称
ppc64le 64 位 PowerPC CPU,小端字节序存储

1、X86架构

X86是微处理器执行的计算机语言指令集,指一个Intel通用计算机系列的标准编号缩写,也标识一套通用的计算机指令集合。1978年6月8日,Intel
发布了新款16位微处理器 8086,也同时开创了一个新时代:X86架构诞生了。
X86指令集是美国Intel公司为其第一块16位CPU(i8086)专门开发的,美国IBM公司1981年推出的世界第一台PC机中的CPU–i8088(i8086简化版)使用的也是X86指令。

随着CPU技术的不断发展,Intel陆续研制出更新型的i80386、i80486直到今天的 Pentium
4系列,但为了保证电脑能继续运行以往开发的各类应用程序以保护和继承丰富的软件资源,所以Intel公司所生产的所有CPU仍然继续使用X86指令集。

2、ARM架构

ARM架构是一个32位精简指令集处理器架构,其广泛地使用在许多嵌入式系统设计。由于节能的特点,ARM处理器非常适用于移动通讯领域,符合其主要设计目标为低耗电的特性。

如今,ARM家族占了所有32位嵌入式处理器75%的比例,使它成为占全世界最多数的32位架构之一。ARM处理器可以在很多消费性电子产品上看到,从可携式装置到电脑外设甚至在导弹的弹载计算机等军用设施中都有它的存在。

ARM和X86架构最显著的差别是使用的指令集不同。

序号 架构 特点
1 ARM 主要是面向移动低功耗领域,因此在设计上更偏重节能能效方面
2 X86 主要面向家用商用领域,在性能兼容性方面做得更好

3、RISC-V架构

RISC-V 架构是基于精简指令集计算(RISC)原理建立的开放指令集架构(ISA),RISC-V是在指令集不断发展和成熟的基础上建立的全新指令。RISC-V
指令集完全开源,设计简单,易于移植Unix系统,模块化设计,完整工具链,同时有大量的开源实现和流片案例,得到很多芯片公司的认可。

RISC-V 架构的起步相对较晚,但发展很快。它可以根据具体场景选择适合指令集的指令集架构。基于RISC-V
指令集架构可以设计服务器CPU,家用电器CPU,工控CPU和用在比指头小的传感器中的CPU。

4、MIPS架构

MIPS架构是一种采取精简指令集(RISC)的处理器架构,1981年出现,由MIPS科技公司开发并授权,它是基于一种固定长度的定期编码指令集,并采用
导入/存储(Load/Store)数据模型。经改进,这种架构可支持高级语言的优化执行。其算术和逻辑运算采用三个操作数的形式,允许编译器优化复杂的表达式。

如今基于该架构的芯片广泛被使用在许多电子产品、网络设备、个人娱乐装置与商业装置上。最早的MIPS架构是32位,最新的版本已经变成64位。

序号 架构 特点
1 X86 英特尔和AMD的“专属”,在PC市场上独霸多年,地位不可撼动
2 ARM 移动端便捷设备上有着不可替代的优势
3 MIPS 网关机顶盒等市场上非常受欢迎
4 RISC-V 虽然出来不久,但在智能穿戴产品上的应用广泛,前景广阔