小编She*_*gon的帖子

了解"损坏的大小与prev_size"glibc错误

我已经为FDK-AAC实现了一个JNA桥.源代码可以在这里找到

在对我的代码进行基准测试时,我可以在同一输入上获得数百次成功运行,然后偶尔会发生C级崩溃,导致整个进程终止,从而导致生成核心转储:

看看核心转储,它看起来像这样:

#1  0x00007f3e92e00f5d in __GI_abort () at abort.c:90
#2  0x00007f3e92e4928d in __libc_message (action=action@entry=do_abort, fmt=fmt@entry=0x7f3e92f70528 "*** Error in `%s': %s: 0x%s ***\n") at ../sysdeps/posix/libc_fatal.c:181
#3  0x00007f3e92e5064a in malloc_printerr (action=<optimized out>, str=0x7f3e92f6cdee "corrupted size vs. prev_size", ptr=<optimized out>, ar_ptr=<optimized out>) at malloc.c:5426
#4  0x00007f3e92e5304a in _int_free (av=0x7f3de0000020, p=<optimized out>, have_lock=0) at malloc.c:4337
#5  0x00007f3e92e5744e in __GI___libc_free (mem=<optimized out>) at malloc.c:3145
#6  0x00007f3e113921e9 in FDKfree (ptr=0x7f3de009df60) at libSYS/src/genericStds.cpp:233
#7  0x00007f3e1130d7d3 in Free_AacEncoder (p=0x7f3de0115740) at libAACenc/src/aacenc_lib.cpp:407
#8  0x00007f3e1130fbb3 in aacEncClose …
Run Code Online (Sandbox Code Playgroud)

c++ malloc free glibc jna

14
推荐指数
1
解决办法
3万
查看次数

高度并行的Apache Async HTTP客户端IOReactor问题

应用说明:

  • 我正在使用由Comsat的Quasar FiberHttpClient(版本0.7.0)包装的Apache HTTP异步客户端(版本4.1.1),以便运行和执行一个高度并发的Java应用程序,该应用程序使用光纤在内部将HTTP请求发送到多个HTTP端点
  • 该应用程序在tomcat之上运行(但是,纤程仅用于内部请求分派。tomcat servlet请求仍以标准阻塞方式处理)
  • 每个外部请求在内部打开15到20条光纤,每个光纤建立一个HTTP请求并使用FiberHttpClient进行调度
  • 我正在使用c44xlarge服务器(16个内核)来测试我的应用程序
  • 端点连接到抢占式保持活动连接,这意味着如果我尝试通过重用套接字进行维护,则在请求执行尝试期间会关闭连接。因此,我禁用了连接回收。
  • 根据以上各节,这是我的光纤http客户端的调谐(当然,我正在使用的单个实例):

    PoolingNHttpClientConnectionManager connectionManager = 
    new PoolingNHttpClientConnectionManager(
        new DefaultConnectingIOReactor(
            IOReactorConfig.
                custom().
                setIoThreadCount(16).
                setSoKeepAlive(false).
                setSoLinger(0).
                setSoReuseAddress(false).
                setSelectInterval(10).
                build()
                )
        );
    
    connectionManager.setDefaultMaxPerRoute(32768);
    connectionManager.setMaxTotal(131072);
    FiberHttpClientBuilder fiberClientBuilder = FiberHttpClientBuilder.
            create().
            setDefaultRequestConfig(
                    RequestConfig.
                    custom().
                    setSocketTimeout(1500).
                    setConnectTimeout(1000).
                    build()
            ).
           setConnectionReuseStrategy(NoConnectionReuseStrategy.INSTANCE).
           setConnectionManager(connectionManager).
           build();
    
    Run Code Online (Sandbox Code Playgroud)
  • 将打开文件的ulimit设置为超高(软值和硬值都为131072)

  • Eden设置为18GB,总堆大小为24GB
  • 操作系统Tcp堆栈也进行了很好的调整:

kernel.printk = 8 4 1 7 kernel.printk_ratelimit_burst = 10 kernel.printk_ratelimit = 5 net.ipv4.ip_local_port_range = 8192 65535 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.core.rmem_default = 16777216 net.core .wmem_default = 16777216 net.core.optmem_max = 40960 net.ipv4.tcp_rmem …

java nio apache-httpclient-4.x quasar

5
推荐指数
1
解决办法
2274
查看次数

标签 统计

apache-httpclient-4.x ×1

c++ ×1

free ×1

glibc ×1

java ×1

jna ×1

malloc ×1

nio ×1

quasar ×1