管理接口访问报错

系统版本 内核版本
Ubuntu 14.04.2 3.13.0-32-generic

我们在这里通过curl来插入命令的时候直接报错:

curl命令写入规则

curl 'http://127.0.0.1:8080/ab_admin?token=zuesx&action=policy_set' -d '{"divtype":"30102","divdata":[{"30102_set":["hsy51234567qc","hsyf1a2c3d4b5"],"upstream":"newhsy"}]}'
2018/10/23 17:44:28 [error] 8738#0: *1090 lua entry thread aborted: runtime error: /opt/nginx/lua_gray/admin/ab_action.lua:5: loop or previous error loading module 'abtesting.utils.utils'
stack traceback:
coroutine 0:
[C]: in function 'require'
/opt/nginx/lua_gray/admin/ab_action.lua:5: in function </opt/nginx/lua_gray/admin/ab_action.lua:1>, client: 127.0.0.1, server: localhost, request: "POST /ab_admin?token=zuesx&action=policy_set HTTP/1.1", host: "127.0.0.1:8080"

上面的报错很明显,又提示进入调用死循环关系或者前期错误当加载'abtesting.utils.utils' 模块的时候,怎么办呢?

  1. 先执行ldconfig,重新加载所有的动态链接库。
  2. 然后重启nginx即可。

    如下所示:
# ldconfig
# supervisorctl
nginx RUNNING pid 8737, uptime 0:10:03
supervisor> restart nginx
nginx: stopped
nginx: started

yield报错

管理接口通过curl(同上)写入规则的时候,报这个错误

attempt to yield across metamethod/C-call boundary

这个的话,我是重新安装了这几步

原版本

  1. lua 5.1
  2. LuaJIT 2.0.2
  3. tengine是2.2.0,

安装后的版本是

  1. lua5.1
  2. LuaJIT 2.0.5
  3. tengine是2.2.0

其实升级的就是LuaJIT而已,主要是安装完LuaJIT后,需要重新编译下tengine,并且我这里使用lua-nginx-module版本是lua-nginx-module-0.10.13

redis连接提示Operation refused

我把ab部署到阿里云后,在阿里云开了一个redis,redis使用的域名连接,然后我在server段的redis配置,把$redis_host的地址设置为了 xxx.aliyun.com,这个域名就是redis连接域名。于是启动nginx+ab,发现在业务流量分流的时候,nginx日志里面总是提示 连接redis失败,所以灰度名单分流也失败,但是发现规则增删改查的接口都没有问题,也就是没有提示任何连接redis失败的原因,我剖析ab的源码,发现都是共用一个redis模块,或者说共用一个redis方法来实现连接的,为什么管理接口的却没有事呢,关键这个Operation refused并没有提示更多有用的信息,于是我把连接redis的那段代码,把err信息全部通过ngx.say这样的方式打印出来,发现完整的报错信息是xxx.aliyuncs.com could not be resolved (5: Operation refused) ,得,这很明显了,是redis域名无法解析出来。

根因找到了,那么就分析为啥会这样的,我仔细查看nginx的配置文件,发现有问题的那个业务配置文件,有一行这样的配置: resolver xxx.xxx.xxx.xxx valid=300s ,然后我又仔细上nginx官网查询了下这个resolver的配置,官网解释请戳这里 , 意思是说这个resolver的配置是表明这个server的所有域名解析都是用这个dns服务器来解析,而redis的域名是阿里云内部的域名,使用刚才配置单的那个dns,根本无法解析,所以才会提示redis连接不上了。

找到为什么会导致无法连接redis的原因后,我们就开始整改了,把resolver去掉或者添加一个阿里云的dns即可。添加完成后重启nginx就可以正常使用ab分流功能了。

abtestingGateway错误集锦的更多相关文章

  1. SVN下错误集锦

    SVN下错误集锦 一SVN下的文件被locked不能update和commit 最近做项目的时候,遇到这个问题,SVN下的文件被locked不能update和commit.其提示如下: 解决办法:执行 ...

  2. (转)Hadoop之常见错误集锦

     Hadoop之常见错误集锦            下文中没有特殊说明,环境都是CentOS下Hadoop 2.2.0.1.伪分布模式下执行start-dfs.sh脚本启动HDFS时出现如下错误:   ...

  3. 在Hadoop 2.3上运行C++程序各种疑难杂症(Hadoop Pipes选择、错误集锦、Hadoop2.3编译等)

    首记 感觉Hadoop是一个坑,打着大数据最佳解决方案的旗帜到处坑害良民.记得以前看过一篇文章,说1TB以下的数据就不要用Hadoop了,体现不 出太大的优势,有时候反而会成为累赘.因此Hadoop的 ...

  4. drp错误集锦---“Cannot return from outside a function or method”

    好久都不动的项目,今天打开项目突然是红色感叹号.详细错误表现为: 也就是说,如今MyEclipse已经不识别在JSP页面中使用的return方法了(并且不止一处这种警告),那怎么办?????顿时闹钟一 ...

  5. django 2.0 xadmin 错误集锦

    转载 django 2.0 xadmin 错误集锦 2018-03-26 10:39:18 Snail0Li 阅读数 5188更多 分类专栏: python   1.django2.0把from dj ...

  6. Tensorflow 错误集锦

    文章目录 参考文献 本文记录笔者在Tensorflow使用上的一些错误的集锦,方便后来人迅速查阅解决问题. 我是留白. 我是留白. CreateSession still waiting for re ...

  7. Python:常见错误集锦(持续更新ing)

    初学Python,很容易与各种错误不断的遭遇.通过集锦,可以快速的找到错误的原因和解决方法. 1.IndentationError:expected an indented block 说明此处需要缩 ...

  8. centos7安装mplayer 错误集锦

    (1)在 linux下运行程序时,发现了error while loading shared libraries这种错误,一时间不知道解决办法,在网上搜索,终于解决了:./tests: error w ...

  9. ubuntu安装php常见错误集锦

    一.configure 报错 1.错误类型: Configure: error: Please reinstall the libcurl distribution-easy.h should be ...

随机推荐

  1. git上传本地项目到github,方法2

    第一步:去github上创建自己的Repository,创建页面如下图所示: 填写相应信息后点击create即可 Repository name: 仓库名称 Description(可选): 仓库描述 ...

  2. Java中Iterator(迭代器)实现原理

    在Java中遍历List时会用到Java提供的Iterator,Iterator十分好用,原因是: 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结 ...

  3. PAT Basic 1046

    1046 划拳 (15 分) 划拳是古老中国酒文化的一个有趣的组成部分.酒桌上两人划拳的方法为:每人口中喊出一个数字,同时用手比划出一个数字.如果谁比划出的数字正好等于两人喊出的数字之和,谁就赢了,输 ...

  4. jmeter接口测试实例6-注册(参数化)

    Jmeter实例6:注册(参数化) 选中http协议,添加CSV Data set Config 准备参数中要使用到的值,存放到txt中,如果一个里面有多个参数,中间用,号分隔: 选中CSV元件,fi ...

  5. JS_高程4.变量,作用域和内存问题(1)

    1.基本类型和应用类型的值 ECMAScript变量可能包含两种不同数据类型的值: 基本类型值——简单的数据段.(5种基本的数据类型,按值访问,因为可以操作保存在变量中的实际的值.) 引用类型值——多 ...

  6. Mac下安装pyenv

    mac 用virtualenv安装py3.6的虚拟环境报错(virtualenv -p /usr/bin/python3 env36), 解决的话需要安装zlib包, 然后去掉configure配置里 ...

  7. poj3190 Stall Reservations(贪心+STL)

    https://vjudge.net/problem/POJ-3190 cin和scanf差这么多么..tle和300ms 思路:先对结构体x升序y升序,再对优先队列重载<,按y升序. 然后依次 ...

  8. [原创]RedisDesktopManager工具使用介绍

    [原创]RedisDesktopManager工具使用介绍 1 RedisDesktopManager简介 一款能够跨平台使用的开源性redis可视化工具.redis desktop manager主 ...

  9. springboot邮件发送与接收读取

    发送邮件 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>sp ...

  10. [Python设计模式] 第25章 联合国维护世界和平——中介者模式

    github地址:https://github.com/cheesezh/python_design_patterns 题目背景 联合国在世界上就是中介者的角色,各国之间的关系复杂,类似不同的对象和对 ...