转载请注明出处:http://blog.csdn.net/cywosp/article/details/40781569

swift在版本号2.1.0之前假设各个服务的配置文件里打开下面配置后,且系统没有配置正确将会出现上传对象出错的情况
log_statsd_host = localhost
log_statsd_port = 8125
log_statsd_default_sample_rate = 1.0
log_statsd_sample_rate_factor = 1.0
log_statsd_metric_prefix =
详细错误log信息大概例如以下:
object-server ERROR __call__ error with PUT /sdc/2468/AUTH_8f9dbbadd64a43a0abb5e832c6ea766a/000008/013781 : #012Traceback (most recent call last):#012  File "/usr/lib/python2.6/site-packages/swift/obj/server.py", line 938, in __call__#012
   res = method(req)#012  File "/usr/lib/python2.6/site-packages/swift/common/utils.py", line 1558, in wrapped#012    return func(*a, **kw)#012  File "/usr/lib/python2.6/site-packages/swift/common/utils.py", line 520, in _timing_stats#012    resp = func(ctrl,
*args, **kwargs)#012  File "/usr/lib/python2.6/site-packages/swift/obj/server.py", line 712, in PUT#012    file.put(fd, metadata)#012  File "/usr/lib64/python2.6/contextlib.py", line 34, in __exit__#012    self.gen.throw(type, value, traceback)#012  File "/usr/lib/python2.6/site-packages/swift/obj/server.py",
line 286, in mkstemp#012    yield fd#012  File "/usr/lib/python2.6/site-packages/swift/obj/server.py", line 680, in PUT#012    'PUT.' + device + '.timing', elapsed_time, upload_size)#012  File "/usr/lib/python2.6/site-packages/swift/common/utils.py", line
654, in wrapped#012    return func(self.logger.statsd_client, *a, **kw)#012  File "/usr/lib/python2.6/site-packages/swift/common/utils.py", line 506, in transfer_rate#012    sample_rate)#012  File "/usr/lib/python2.6/site-packages/swift/common/utils.py", line
496, in timing#012    return self._send(metric, timing_ms, 'ms', sample_rate)#012  File "/usr/lib/python2.6/site-packages/swift/common/utils.py", line 481, in _send#012    return sock.sendto('|'.join(parts), self._target)#012  File "/usr/lib/python2.6/site-packages/eventlet/greenio.py",
line 371, in sendto#012    return self.fd.sendto(*args)#012error: [Errno 1] Operation not permitted (txn: tx8d76698250304466817aa99061637421)


依据log信息查到是在swift/common/utils.py文件的StatsdClient._send函数抛出了异常没有被捕捉导致的。该函数代码例如以下:
    def _send(self, m_name, m_value, m_type, sample_rate):
        if sample_rate is None:
            sample_rate = self._default_sample_rate
        sample_rate = sample_rate * self._sample_rate_factor
        parts = ['%s%s:%s' % (self._prefix, m_name, m_value), m_type]
        if sample_rate < 1:
            if self.random() < sample_rate:
                parts.append('@%s' % (sample_rate,))
            else:
                return
        # Ideally, we'd cache a sending socket in self, but that
        # results in a socket getting shared by multiple green threads.
        with closing(self._open_socket()) as sock:
                return sock.sendto('|'.join(parts), self._target)     #该函数调用抛出了异常
解决的方法:
    在return sock.sendto('|'.join(parts), self._target)中增加异常处理就可以。详细代码可參考官方最新代码

同一时候系统的/var/log/messages日志中出现大量的例如以下信息:
proxy-access Error sending UDP message to ('127.0.0.1', 8125): [Errno 1] Operation not permitted
proxy-access Error sending UDP message to ('127.0.0.1', 8125): [Errno 1] Operation not permitted
kernel: __ratelimit: 89 callbacks suppressed
kernel: nf_conntrack: table full, dropping packet.
kernel: nf_conntrack: table full, dropping packet.
kernel: nf_conntrack: table full, dropping packet.
解决的方法:
依据上面的信息。得知8125port是StatsD服务port,因此是StatsD的client出了问题。

同一时候内核报出了丢包错误。主要是因为server防火墙开启了过滤机制导致的(net.ipv4.netfilter.ip_conntrack_max太小)。在此将防火墙关闭就可以(service iptables stop)


參考:

版权声明:本文博主原创文章。博客,未经同意不得转载。

Swift开放StatsD后上传数据的出现,出现退换货503的Bug的更多相关文章

  1. TortoiseGit和msysGit安装及使用笔记(windows下使用上传数据到GitHub)[转]

    TortoiseGit和msysGit安装及使用笔记(windows下使用上传数据到GitHub) Git-1.7.11-preview+GitExtensions244SetupComplete+T ...

  2. Amzon MWS API开发之 上传数据

    亚马逊上传数据,现有能操作的功能有很多:库存数量.跟踪号.价格.商品....... 我们可以设置FeedType值,根据需要,再上传对应的xml文件即可. 下面可以看看FeedType类型 这次我们拿 ...

  3. Amazon MWS 上传数据 (二) 构造请求

    上一篇文章提到了Amazon 上传数据有三个步骤,但是每个步骤都需要构造服务和构造请求,服务是一样的,请求各不相同:这个很容易理解,这三个步骤都需要和Amazon服务器交互,所以他们的服务构造是一样的 ...

  4. Amazon MWS 上传数据 (一) 设置服务

    Amazon 上传数据的流程为: 通过 SubmitFeed 操作.加密标头和所有必需的元数据(包括 FeedType 的值在内),来提交 XML 或文本型数据文件.正如亚马逊 MWS的所有提交内容一 ...

  5. 使用ajax上传图片,支持图片即时浏览,支持js图片压缩后上传给服务器

    使用ajax上传图片,支持图片即时浏览,支持js图片压缩后上传给服务器 ajax上传主要使用了 var reader = new FileReader() 此方法 js图片压缩主要是利用canvas进 ...

  6. C# 防止content-type修改后上传恶意文件

    以图片为例子.在上传图片的时候,使用Fiddler抓取 通过js判断文件类型是不安全的,所以通过后台来判断,代码如下: ) { HttpPostedFile file0 = Request.Files ...

  7. Streamr助你掌控自己的数据(1)——教你5分钟上传数据至Streamr

    博客说明 所有刊发内容均可转载但是需要注明出处. 教你5分钟上传数据至Streamr 本系列文档主要介绍怎么通过Streamr管理自己的DATA,整个系列包括三篇教程文档,分别是:教你5分钟上传数据至 ...

  8. 通过 微软 pai-fs 上传数据到HDFS (Microsoft OpenPAI)

    准备环境 (个人使用记录,方便下次使用查阅~~) 首先保证PAI是登陆状态: 进入GitHub项目所在地址: https://github.com/Microsoft/pai/ 然后切换分支到  具体 ...

  9. ajax上传数据

    ---恢复内容开始--- ajax上传数据,(简洁版) 1.上传普通同表单标签内容. 1.获取表单的内容 1. var file=$('#file').val();(放在点击事件后面) 2. var ...

随机推荐

  1. cassandra新增、更新、删除数据。

    package client; import java.io.UnsupportedEncodingException; import java.nio.ByteBuffer; import java ...

  2. 基于PHP和mysql的自动生成表单

    开发背景:公司要求管理系统能够由管理员在前台页面管理系统表单,能够对表单进行增删改查基本操作,表单的各个字段都可以被修改.删除,可以添加新的字段,并且不影响系统正常运行,前台表单展示要由系统自动处理, ...

  3. 文成小盆友python-num14 - web 前端基础 html ,css, JavaScript

    本部分主要内容 html - 基础 css - 基础 一.html 标签 html 文档标签树如下: head 部分 Meta(metadata information) 提供有关页面的元信息,例:页 ...

  4. 转:40多个关于人脸检测/识别的API、库和软件

    文章来自于:http://blog.jobbole.com/45936/ 自从谷歌眼镜被推出以来,围绕人脸识别,出现了很多争议.我们相信,不管是不是通过智能眼镜,人脸识别将在人与人交往甚至人与物交互中 ...

  5. ural 1180 Stone Game

    http://acm.timus.ru/problem.aspx?space=1&num=1180 #include <cstdio> #include <cstring&g ...

  6. Xamarin Add Mac

    右键IOS项目,设置为启动项目,点击启动(F5)弹出如下提示 提示开启远程访问权限,按照提示照做即可 在mac端 进入系统偏好设置 双击选择共享 打开远程登陆,允许所有用户访问 设置完成后点击ok 弹 ...

  7. HASH JOIN算法

    哈希连接(HASH JOIN) 前文提到,嵌套循环只适合输出少量结果集.如果要返回大量结果集(比如返回100W数据),根据嵌套循环算法,被驱动表会扫描100W次,显然这是不对的.看到这里你应该明白为 ...

  8. linux 信号signal和sigaction理解

    今天看到unp时发现之前对signal到理解实在浅显,今天拿来单独学习讨论下. signal,此函数相对简单一些,给定一个信号,给出信号处理函数则可,当然,函数简单,其功能也相对简单许多,简单给出个函 ...

  9. windows 触发桌面图标布局保存

    问题: 项目原有的一套结构由于引进了一个磁盘套件,类似于关闭系统的explorer.exe进程,进入到他所维护的explorer.exe中.于是出现了当退出磁盘的时候没有保存好桌面布局信息导致下次进入 ...

  10. Codeforces Round #299 (Div. 1)C. Tavas and Pashmaks (凸壳)

    C. Tavas and Pashmaks   Tavas is a cheerleader in the new sports competition named "Pashmaks&qu ...