随笔分类 -  programming c linux

摘要:5.5线程特定的存储器(Thread-Specific Storage) 1.问题 为了避免竞争条件、资源耗尽和死锁多线程应用程序需要复杂的并发控制协议,从而难以编程。由于存在加锁开销,所以多线程应用程序的性能往往比不上单线程应用程序,事实上它们的性能可能更糟,特别是在多处理平台上。在并发程序中有两 阅读全文
posted @ 2021-09-03 16:40 codestacklinuxer 阅读(116) 评论(0) 推荐(0)
摘要:5.3半同步/半异步 1.问题 并发系统通常既包含异步处理服务,又包含同步处理服务。系统程序员有充分的理由使用异步特性改善性能。异步程序一般更高效,因为可以直接将服务映射为异步机制,如硬件中断处理程序或者软件信号处理程序。 相反,应用程序员也有充分的理由使用同步处理简化他们的编程强度。通常同步程序更 阅读全文
posted @ 2021-09-03 16:39 codestacklinuxer 阅读(101) 评论(0) 推荐(0)
摘要:5.2监视器对象 1.问题 许多应用程序包含其方法被多个客户机线程并发调用的对象。这些方法通常修改其对象的状态。因此,为了使这些并发应用程序能正确地执行,有必要对对象的访问进行同步和调度。对于这个问题,必须考虑四个强制条件: 1)为了事务分离并避免对象状态不受控制地修改,面向对象编程人员习惯于只通过 阅读全文
posted @ 2021-09-03 16:38 codestacklinuxer 阅读(45) 评论(0) 推荐(0)
摘要:并发模式 为在多线程或进程间共享资源而设计的2种模式: ·主动对象设计模式将方法执行和方法调用分离开来。目的是加强并发和简化对驻留在自身控制线程中的对象的同步访问。 ·监视器对象设计模式同步化并发方法的执行,以确保同一时刻在对象内部只有一个方法运行。它也允许对象的方法协作调度方法的执行顺序。 下面2 阅读全文
posted @ 2021-09-03 16:37 codestacklinuxer 阅读(96) 评论(0) 推荐(0)
摘要:【原创】Linux RCU原理剖析(二)-渐入佳境 背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本:4.14 ARM64处理器,Contex-A53 阅读全文
posted @ 2021-09-01 23:33 codestacklinuxer 阅读(520) 评论(0) 推荐(0)
摘要:涉及到 项目就只写基本了 有些东西无法详细描述就一笔概括了 并发模式: 反应器 主动器 异步完成标记 接收器-连接器 反应器 Reactor: 事件驱动应用可以多路分解 分配; 可以逆转控制流; 和好莱坞原则一样:“不要打电话给我们,我们会给你们打电话”; 缺点:不能同时支持大量客户和耗时长的客户请 阅读全文
posted @ 2021-08-25 17:50 codestacklinuxer 阅读(80) 评论(0) 推荐(0)
摘要:目前有很多网络库,其中libevent是基于Reactor实现的,而boost.asio是基于Proactor实现的。Reactor和Proactor模式的主要区别就是真正的操作(如读/写)是由谁来完成的,Reactor中需要应用程序自己读取或者写入数据,而在Proactor模式中,应用程序不需要进 阅读全文
posted @ 2021-08-22 18:36 codestacklinuxer 阅读(55) 评论(0) 推荐(0)
摘要:web服务器卡死,登陆到后台查看问题; ps aux执行的时候发现卡死, 重新ssh 登陆 strace ps 发现如下结果: 使用gdb 调试也是卡死! 使用top -b 查看所有的进程,发现 之前的ps 的进程为D状态, 同时web服务器 部分线程进程为D状态; dmesg 查看结果发现: [2 阅读全文
posted @ 2021-08-18 11:08 codestacklinuxer 阅读(154) 评论(0) 推荐(0)
摘要:首先需要弄清楚 进程被干掉的过程是怎样的? 一般使用kill -9 pid 来杀死进程 , 那么进程是怎样收到signal以及处理signal呢? 那目前有哪些现成的工具可以使用探测signal呢? 参考tapset文档 #! /usr/bin/env stap # sigkill.stp # Co 阅读全文
posted @ 2021-08-02 10:03 codestacklinuxer 阅读(452) 评论(0) 推荐(1)
摘要:目前是直接使用systemp 工具 检查ip_output部分逻辑:简写代码如下所示 #! /usr/bin/env stap %{ #include <linux/in.h> #include <linux/inet.h> #include <net/inet_sock.h> #include < 阅读全文
posted @ 2021-07-19 22:14 codestacklinuxer 阅读(137) 评论(0) 推荐(0)
摘要:今天处理了一个限速&&慢速攻击的问题! 现在来对这个问题做一个整体的分析与 回顾 原理 是以极低的速度往服务器发送HTTP请求。由于Web Server对于并发的连接数都有一定的上限,因此若是恶意地占用住这些连接不释放,那么Web Server的所有连接都将被恶意连接占用,从而无法接受新的请求,导致 阅读全文
posted @ 2021-07-13 09:54 codestacklinuxer 阅读(247) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2021-07-01 16:29 codestacklinuxer 阅读(58) 评论(0) 推荐(0)
摘要:拓扑: client >AA-tproxy-BB server client server 之间使用tproxy 代理 从抓取报文来看,在管理连接的时候出现大量ack报文,以上不是完整报文 直接给结论吧: server主动关闭发出FIN, BB 收到FIN后,发出Fin-ack,同时去AA 主动关闭 阅读全文
posted @ 2021-06-30 23:29 codestacklinuxer 阅读(95) 评论(0) 推荐(0)
摘要:目前引擎ssl逻辑在ssl_read ssl_shuwdown 上存在问题! 主要问题是: 错误处理不正确,很多错误遗漏,基本只有正常逻辑 首先看下 ssl_read 官方文档解释 In the following, SSL_read() and SSL_peek() are called “rea 阅读全文
posted @ 2021-06-24 21:58 codestacklinuxer 阅读(359) 评论(0) 推荐(0)
摘要:根据 free 以及top 命令发现问题如下: used内存占用很大,而实际系统中个进程并没有占用这么多内存, 同时cache/buffer 使用非常小,对于used内存,将近有15g的内存不知道被什么给使用? 先google 看下 meminfo 各个字段的含义: 参考:http://linuxp 阅读全文
posted @ 2021-06-23 15:47 codestacklinuxer 阅读(815) 评论(0) 推荐(0)
摘要:今天同事说有个问题弄了很长时间没有找出原因让帮忙看下,问题最后得以解决;现在来记录一下当时分析处理的过程! 问题:客户端使用http 去下载视频发现下载很慢, 但是去掉网络传输路径中的节点A, 下载速度就很快恢复正常 目前有客户端 以及 节点A的内部抓包的结果,节点A内部是设置的转发模式; 网络拓扑 阅读全文
posted @ 2021-06-19 15:19 codestacklinuxer 阅读(508) 评论(0) 推荐(0)
摘要:有一个想法:由于 udp 是无连接的 包传输模式! 所以有时在局域网想使用udp,但是 udp 是无连接的, 如果使用UDP 做服务器, 其是无连接的,那怎样实现其tcp的四元组有链接呢?? 想了一下:udp 添加listen 字段就行!! sk = __udp4_lib_lookup_skb(sk 阅读全文
posted @ 2021-05-28 21:28 codestacklinuxer 阅读(614) 评论(0) 推荐(0)
摘要:目前看以前的代码想到一个问题,unlink rm 区别 和和 close 的区别! 主要场景是 想使用 文件大内核锁进行多进程互斥! 多进程中使用 文件锁互斥方式如下: mtx->fd = open_file(file_name); mtx->name = file_name; fork() 也就是 阅读全文
posted @ 2021-05-27 21:00 codestacklinuxer 阅读(113) 评论(0) 推荐(0)
摘要:Memcache作为内存cache服务器,内存高效管理是其最重要的任务之一,Memcached使用SLAB管理其内存!! 记住 从内存池里面连续的地址 获取一小块内存地址时 需要注意 地址对其问题; 一般 CHUNK_ALIGN_BYTES = 8 or 16 原因和CPU处理内存方式有关,考虑到C 阅读全文
posted @ 2021-05-26 23:40 codestacklinuxer 阅读(68) 评论(0) 推荐(0)
摘要:3.1使用SSL层接口函数安全通信 使用SSL层接口函数进行安全通信的方法由以下几个步骤组成: 1)初始化OpenSSL库 使用OpenSSL库之前,应用程序必须初始化库,初始化函数列出如下: SSL_library_init(void); OpenSSL_add_ssl_algorithms(); 阅读全文
posted @ 2021-05-26 23:40 codestacklinuxer 阅读(767) 评论(0) 推荐(0)