技术分享 -- 147




问题描述开始阅读 nginx 源码的时候就一直伴随着一个问题,那就是多进程的 nginx 模型是怎么保证多个进程同时写入一个文件不发生数据交错呢?猜想中,主要有以下几种解决方案:最传统的,正在写文件的进程加锁,其他进程等待,但是这样的情况是绝对不允许的,效率太过低下写 log 前测试锁状态,如果已经锁定,则写入进程自己的缓冲区中,等待下次调用时同步缓冲区,这样做的好处是无需阻塞,提高了效率,但是就无法做到 log 的实时了,这样做工程中也是绝对无法接受的,一旦发生问题,将无法保证 log 是否已经被写入,因此很难定位一个进程专门负责写 log,其他进程通过域套接字或者管道将 log 内容发送给他,他持续阻塞在 epoll_wait 上,直到收到信息,立即写入,但是众所周知,nginx 是调用同一个函数启动所有进程的,并没有专门调用函数启动所谓的 log 进程,除了 master 和 worker,nginx 也确实没有 log 进程存在那么就是进程启动后,全部去竞争某个锁,竞争到该锁的 worker 执行 log&n
#技术帖    #linux    #unix    #socket   
概述无论是大企业还是小公司,都有意无意的使用 mysql 来搭建数据存储服务,但是随着业务访问量、数据量的急剧膨胀,集中式数据存储越来越凸显出他的技术瓶颈,需要做读写分离而这恰恰也是 mysql 的一个优势所在,正是 mysql 的可扩展性,让 mysql 逐渐成为了企业的优先选择 mysql 的分表设计mysql 上设计数据库应该力求做到小快灵,单库数据量要小,数据库要快速响应,表设计要灵活不同的业务可以选择不同的分表原则,同时需要考虑怎么高效的水平扩展数据量过大,就要进行表的拆分,当然,如果某个表的访问压力过大,同样也是需要考虑分表的,将两个表分别放到两个服务器上来分担压力那么怎么分表,策略主要有以下几个: 配置表 + 数据表将存储数据的表按照某种分表规则和查询路由进行分表,并新建配置表,存储和维护对应的分表规则和查询路由当然,如果分表规则太过灵活,这也意味着分表风险过高 mod 取模分表如果分 4 个表,那么用每条数据的自增ID对 4 取模,取得对应的分表编号,从而可以达到分散数据、分表的目的同时,随着业务发展带来的数据膨胀及访问压力的加大,进一步分表也是非常容易的 M
#技术帖    #mysql    #database    #技术分享   
概述让进程在后台运行是一个常见的场景,只需在启动任务的命令最后加上 & 或运行过程中按下 CTRL+Z,再执行 bg 即可让任务在后台运行了但是如果此时我们关掉终端,或者由于网络问题突然断开连接,那么后台任务也就随之退出了那么,怎么才能让任务在后台可靠运行呢? 只运行单个临时任务 -- nohup / setsid / &我们知道,当用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其所有子进程。因此,我们的解决办法就有两种途径:要么让进程忽略 HUP 信号,要么让进程运行在新的会话里从而成为不属于此终端的子进程 nohup最常用的方法当然就是 nohup 了,顾名思义,就是让任务忽略 HUP 信号nohup sh test_task.sh > output.txt 2>&1 &  setsid除了让任务忽略 HUP 信号这样的方式以外,直接让任务脱离终端执行也就不会受到终端退出的影响了与 nohup 一样,只需在任务命令前加上 sets
#技术帖    #linux    #unix    #技术分享   
概述awk是一种编程语言,用于在linux/unix下对文本和数据进行处理数据可以来自标准输入、一个或多个文件,或其它命令的输出它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具它在命令行中使用,但更多是作为脚本来使用awk 的处理文本和数据的方式是这样的,它逐行扫描文件,从第一行到最后一行,寻找匹配的特定模式的行,并在这些行上进行你想要的操作如果没有指定处理动作,则把匹配的行显示到标准输出(屏幕),如果没有指定模式,则所有被操作所指定的行都被处理awk 分别代表其作者姓氏的第一个字母因为它的作者是三个人,分别是 Alfred Aho、Brian Kernighan、Peter Weinbergergawk是awk的GNU版本,它提供了 Bell 实验室和 GNU 的一些扩展 awk 命令格式和选项调用命令awk [options] 'script' var=value file(s) 或者awk [options] -f scriptfile var=value file(s) 可以运行 awk 命令或脚本 命令选项awk 命令选项选项意义-F fs or --field-
#技术帖    #linux    #unix    #技术分享   

200x200


问题描述输入格式:a. 若干行数据,每行数据有3列内容,列之间\t分割b. 第一列表示属性1,第二列表示属性2,第三列表示属性3c. 每一个属性的可能取值在一次计算过程中是固定的,比如属性1只可是0,

#技术帖    #linux    #unix    #bash   
概念所谓的惊群现象指的是当多个进程或线程在等待同一资源时,当该资源突然由不可用变为可用,虽然资源只能供一个进程或线程使用,但所有线程或进程都被唤醒去竞争这一资源惊群现象会造成系统性能的大幅下降:系统对用户进程/线程频繁的无效调度,大幅度的降低系统效率为了确保只有一个进程或线程得到资源,用户必须对资源加锁,这就进一步增加了系统开销 最常见的例子就是对 socket 描述符的 accept 操作,当多个用户进程或线程都通过 accept 监听在同一端口上时,由于实际只可能 accept 一次,因此所有进程都被唤醒而实际却只有一个进程 accept 成功,造成惊群现象 这是一个历史问题,linux 2.6 内核以上 accept 系统调用已经不会引起惊群现象了但是,如果调用 epoll,多个进程调用 epoll_wait 等待事件,依然会引起惊群现象,每个进程都被唤醒,但是只有一个 accept 正确返回 linux 内核的解决方法对于一些 linux 内核中已知的惊群问题,内核开发者增加了“互斥等待”选项:当一个等待队列入口如果 
#技术帖    #linux    #unix    #技术分享   

200x200


简介Shell 的作用是解释执行用户的命令,用户输入一条命令,shell 就行一条,这种方式成为交互式,还有另外一种方式,就是用户事先写一个 shell 脚本,

#技术帖    #linux    #unix    #技术分享   
.sql_table p{ margin:0px; font-family:SimSun; } 题目描述经常看到问题,如何取出每组的前 N 条记录 原始数据 +----+------+------+-----+| id |SName |ClsNo |Score|+----+------+------+-----+|  1 |AAAA  |  C1  | 67  ||  2 |BBBB  |  C1  | 55  ||  3 |CCCC  |  C1  | 67  ||  4 |DDDD  |  C1  | 65  ||  5 |EEEE  |  C1 &nbs
#技术帖    #mysql    #sql    #技术分享   
求按天内去重后结果有一个表 A:表 A 结构及数据time_strremote_host2015-02-17 21:25:53112.142.97.542015-02-17 21:25:52128.9.1.22015-02-17 19:13:43133.09.12.382015-02-17 18:44:10128.9.1.22015-02-16 23:27:36136.22.15.992015-02-16 23:27:19136.22.15.992015-02-17 21:25:08128.9.1.22015-02-16 23:30:24136.22.15.992015-02-16 23:28:2644.52.142.72015-02-16 23:28:06112.142.97.542015-02-17 20:50:26133.09.12.382015-02-17 19:59:35112.142.97.542015-02-17 20:50:32133.09.12.382015-02-16 23:30:28136.22.15.992015-02-17 18:43:54133.09.12.382015-02-17 18:43:46112.142.97.542015-02-16 23:32:42112.142.97.542015-02-16 23:32:38127.09.18.
#技术帖    #mysql    #sql    #技术分享   

200x200


图示 磁盘存储如图所示,系统由 MBR(主引导区)引导启动,载入分区表,加载 VFS,文件系统开始进入工作状态每个分区维护自己的超级块,用于描述文件系统类型等的关键参数空

#技术帖    #操作系统    #os    #龙潭书斋   



京ICP备15018585号