1.
OCI运行时创建失败问题描述:Selinux开启状态异常导致docker运行失败
问题现象:
代码块 | ||
---|---|---|
| ||
OCI runtime create failed: container_linux.go:345 |
错误日志log:
代码块 | ||
---|---|---|
| ||
ERROR: for mysql Cannot start service mysql: OCI runtime create failed: container_linux.go:345: starting container process caused “process_linux.go:430: container init caused “write /proc/self/attr/keycreate: permission denied””: unknown |
可以初步判断是由于SELINUX 开启以后/proc/self/attr/keycreate 文件禁止写入。
解决方案:
关闭selinux:
CentOS 7以上解决方案:关闭selinux。CentOS 7 以上版本,将 “/etc/selinux/config 文件中 SELINUX值修改为disabled 重启” 文件中 “SELINUX” 值修改为 “disabled” ,保存后重启服务器。
2. docker-compose
报错解决方案:
请查看docker-compose的和docker的版本是否匹配
建议采用docker-ce-19.03搭配 docker-compose 1.24.1
3. sudo指令找不到
问题现象:
在使用docker指令时提示无法找到相关命令,如下
代码块 | ||
---|---|---|
| ||
docker-compose command not found |
解决方案:
首先检查docker-compose 文件的权限,假如权限和位置都正常这时应该是 用户的bin目录对应不上docker-compose请采用如下的办法解决:
ln 首先检查 “docker-compose” 文件的权限,假如权限和位置都正常。
那就应该是 “用户的bin目录” 对应不上“docker-compose”,重新安装docker-compose,进入“/usr/local/bin”目录下使用命令创建软连接
代码块 | ||
---|---|---|
| ||
ln /usr/local/bin/docker- |
compose /usr/bin/docker-compose |
3. 使用https的Smartbi地址无法访问
问题描述:问题现象:
配置了nginx,但Smartbi proxy的容器内部访问不到外网,导致使用http的smartbi地址可以正常使用,https却不行Proxy的容器内部访问不到外网,导致使用http的Smartbi地址可以正常使用,https却不行
解决方案:
请检查docker0的防火墙配置
代码块 | ||||
---|---|---|---|---|
| ||||
firewall-cmd --permanent --zone=trusted --change-interface=docker0 firewall-cmd --reload |
重启服务器或者重启docker后生效
5. Python 报错:Illegal instruction (core dumped)
问题现象:
所有的Python服务启动后自动挂掉,使用docker logs 查看,出现如下日志:
代码块 | ||
---|---|---|
| ||
Illegal instruction (core dumped) |
原因:当前服务器的物理cpu 不支持TensorFlow所需要的指令码 avx 和avx2
解决方案:
查看cpu支持的指令集:
cat 表示当前服务器的 CPU 不支持TensorFlow所需要的指令集 avx 和 avx2。
解决方案:
① 物理机
更换为支持avx执行集合的物理机
② 虚拟机
更换对应的cpu映射,更换为支持指令集 avx 和avx2的cpu。以深信服为例:
验证解决:
查看cpu支持的指令集。如果能找到avx和avx2则说明正常
代码块 | ||
---|---|---|
| ||
cat /proc/cpuinfo|grep avx |
6. 进入系统配置时报错:More than one row with ... was found
原因:可能是smartbi可能是Smartbi_ai_config数据库中的t_ai_system_param表有问题;
解决方案:
进入docker容器删除该表后重启
7.
出现nl2sql和nl2table服务启动失败解决方案:
如发生nl2sql 和nl2table服务启动失败,请检查是否是缺少了data/nl2sql_data里的文件。其中包括以下9个文件:
Mysql数据库服务无法启动
① 原因: 可能是smartbi可能是Smartbi_ai_config数据库不存在。
解决方案:
进入docker容器: docker exec -it <容器名> bin/bash
创建一个新的 smartbi
参考以下步骤逐一执行,最后按提示输入密码。
代码块 | ||
---|---|---|
| ||
# 进入 docker 容器 docker exec -it <容器名> bin/bash # 创建一个新的 Smartbi_ai_config数据库 |
mysql -u root -p </home/data/ |
Smartbi_ai_config.sql |
按提示输入密码
② 原因: 数据库无法远程连接,导致mysql服务反复重启;
解决方案:admin 用户缺少对应的远程连接权限,需要进入docker容器(docker exec -it <镜像名>
这可能是由于 admin 用户缺少对应的远程连接权限引起的,需要进入docker容器。
代码块 | ||
---|---|---|
| ||
# 进入 docker 容器 docker exec -it <镜像名> bin/bash |
进入mysql客户端接着进入mysql客户端(一般情况下mysql一般情况下“mysql.cnf文件中有对应配置所以不会出现这个问题cnf”文件中会存在对应配置,因此不会出现这个问题)
输入采用指令:
输入以下指令:
代码块 | ||
---|---|---|
| ||
grant all on {}.** to admin@'%' identified by 'admin' with grant option; flush privileges; |
8. 所有服务启动正常但无法连接上服务器
① 原因:服务器不存在。
解决方案:尝试在linux系统中使用 ping <服务器ip地址> :
例如 ping 10.10.10.104 查看是否能连接上服务器;
② 原因:数据库字符集不为utf数据库字符集不为“utf-8 或者数据库中的表格不为UTF-8格式 数据库字符集不对导致admin 8”格式,或者数据库中的表格不为“utf-8”格式。即数据库字符集不对从而导致 admin 服务中出现 Incorrect string value报错,如下value 报错。
解决方案:
需要进入docker 容器内(docker exec -it <镜像名> bin/bash) 对smartbi对Smartbi_ai_config数据库进行修改,
代码块 | ||||
---|---|---|---|---|
| ||||
ALTER DATABASE |
Smartbi_ai_config DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; |
alter table t_ai_system_param character set utf8; |
检查对应的mysql.cnf文件是否正确配置,修改后重新启动docker服务;修改完成后可以采用 show variables like cnf文件是否正确配置,修改后重新启动docker服务;
修改完成后可以以下命令来查看。
代码块 | ||
---|---|---|
| ||
# 该命令建议手动输入,其中的双引号" "直接复制粘贴可能会出现问题) show variables like "character%"; |
4.4 服务实时监控表为空
<ip地址>:9081/manager(端口号以docker-compose文件为准) 为模块管理中心,当数据库不存在t_ai_module 这个表 需要重新建立一个这个表,参看第九章的导入方式;
4.5服务器运行正常
9. 服务器运行正常,选择对应的业务主题正常,但是业务主题查询不出对应结果;
a. ① 原因:假如可以查询表格数据,可能是输入服务器地址有误:
注意最后一个'/'需要有 正确示例如:https://demo.smartbiSmartbi.com.cn/smartbi/ ←就是这个/ 该问题会后续修复
b.所选则的业务主题列名字数+问句长度超出模型限制的512Smartbi/
注意 |
---|
注意:地址最后一位'/',该问题会后续修复。 |
② 原因:所选则的业务主题列名字数+问句长度超出模型限制(512)
10. 自然语言查询平台无法使用语音功能
原因:当前页面地址是http开头,由于在http协议下安全性原因导致无法调用麦克风
解决方案1:
将当前页面地址开头的http改为https。
解决方案2:
① 以Chrome浏览器为例:在浏览器地址栏中输入“chrome://flags/#unsafely-treat-insecure-origin-as-secure”,回车,如下图,将该选项置为Enabled,在输入框中输入需要访问的地址,多个地址使用“,”隔开,然后点击右下角弹出的Relaunch按钮,自动重启浏览器之后就可以在添加的http地址下调用摄像头和麦克风了。
② 可以通过在“浏览器快捷方式”上右键→属性,在弹出框中的“快捷方式选项”下的“目标属性”后加
代码块 | ||
---|---|---|
| ||
--unsafely-treat-insecure-origin-as-secure="http://你要访问的网址" |
记得和前边的内容中间有空格隔开,然后点击右下角的应用和确定按钮,重启浏览器。