为什么80%的码农都做不了架构师?>>>   

一网站以下简称A站,这A站在年后流量猛增从一天的七八十万猛跑到了好几百万的IP,一天下来接近一千万的PV让整个服务器在高压下超负荷的工作着,时不时的服务就出现宕机。 最首先反映出情况的是数据统计,一天下来一个数据也没有统计上,原来是MySQL停止工作了。 本文就围绕这个问题来讲讲我们公司几个技术人员的解决方案。 1. MySQL服务器集群 由于是小公司在资金和成本上都有所限制,而且在技术上也没有几个技术员接触过,所以这个方法自然就让大伙否决了。 这里说说我个人的理解!做集群不但添加资费的开销,而且在技术上也有很大的挑战,对于我们公司目前的情况是不大现实的。集群无非就是把一台服务器的压力转接到两台或是多台服务器上,我是这么理解的,也许我理解有误,还请大家指教。 2. 分而治之 这个方法和集群差不多,不过是把统计的代码放在不同的服务器上跑,由于公司有不少配置低的服务器跑几万到几十万IP还是没有问题的,我们可以把几百万流量分成十来个几十万的量分而统计。 优点:充分的利用了现在的资源,解决了目前的问题。 缺点:这样的方法不是长久之计,迟早还是会出问题的。而且在统计数据的时候比较麻烦。 3. 统计代码的修改 由于之前采用的是在插入数据之前加以判断,这个IP是否存在,来路等的处理,无形中增加了服务器的压力,所以大伙把统计代码改成来一个就插入数据库,不管三七二十一等以后在处理。 这个方法基本上把当天的数据保留下来了,可是在处理的时候由于数据量的庞大,来来回回还是把服务器跑死了,而且在插入的时候由于当时设计数据结构的时候留有的索引,也大大的消耗了不少的服务器资源。 那么把索引去掉到最后处理的时候又是老慢的,得不偿失。 4. 统计方式的修改 最后这一个方法,效果非常的明显。那是什么方法呢! 这里就主要介绍这个方法: A、 保留原用的数据结构不变,并把所有的数据按一定的结构存入文件 结构:可以是xml,json,也可以是你自己想的任何有规律的数据排放。 例如: 1 221.2.70.52,httpwww.baidu.com,windowxprn 2 221.2.70.52,httpwww.baidu.com,windowxprn 写入文件fopen,fwriteno 这里介绍一个非常好用的技巧,也许大家都知道,但是像我这样的菜鸟大概都不知道,那就是用error_log,这不是写错误日志的吗对就是他,非常方便。 格式: error_log(“内容”, 3, ”date.dat”); 这里我就不说他的具体用了,不明白的朋友可以查一下手册。 B、数据文件的命名 为什么这里要讲文件的命名呢如果就一味的把数据的写入文件不作任何的处理那么他和直接插入数据库有多大的区别呢那么我们所作的一切都是无用功了。 首先是在时间的利用上date(‘YmdH’)得到的值是如:2008121112这有什么好入,这样一来这个数据就是一个小时一个文件必免了文件过大,而且不用去判断自动生成。 IP的应用:由于在很多数据上都是一个IP操作的,所以把相同IP的数据放在一个文件里在后面的处理就非常方便处理。请看后面的介绍,这里我们取IP成三位为文件名字的一部分。 C、数据的导入处理 通过以上两位的操作当天的数据会一个不少的保留下来,接下来怎么处理其实并不是很重要了。但是这里还是讲讲我的想法。 入库前处理: 前面讲到把IP三位相同的放一个文件就是为了入库前到它们进行处理,首先可以用最笨的方法把数据拆成N个数据。在进行重复数据的删除。 如果一个IP浏览多页那么PV在这里就可以得到统计,并把访问的页面进行处理,组成新的数据。 导入方法: 这里要介绍一下数据的导入方法

$sql=”LOAD DATA INFILE ’”.$file.”‘ INTO TABLE `test` FIELDS TERMINATED BY ’,‘ LINES TERMINATED BY ’rn’(`time` , `md5`)”;

就这一个语句,在导入几十万数据的时候可以说是十分快速的,用法我这里也不过多介绍了,大家有不明白的可以查手册,所以说解决数据库的瓶颈的办法不定要加设备,也不一定要换数据库,只要换一个思路就能解决不少问题。

转载于:https://my.oschina.net/766/blog/211410

MySQL百万级高并发网站优化相关推荐

  1. MYSQL百万级数据,如何优化

    MYSQL百万级数据,如何优化 首先,数据量大的时候,应尽量避免全表扫描,应考虑在 where 及 order by 涉及的列上建立索引,建索引可以大大加快数据的检索速度.但是,有些情况索引是不会起效 ...

  2. 9基于linux百万级高并发框架Skynet-王桂林-专题视频课程

    <9>基于linux百万级高并发框架Skynet-830人已学习 课程介绍         全面介绍一款专门为游戏服务所打造的后台框架skynet,Actor模型的剖析与搭建,通用服务模块 ...

  3. OPPO百万级高并发MongoDB集群性能数十倍提升优化实践

    点击蓝色"架构文摘"关注我哟 加个"星标",每天上午 09:25,干货推送! 1. 背景 线上某集群峰值TPS超过100万/秒左右(主要为写流量,读流量很低), ...

  4. 百万用户的网站访问云服务器,大型网站百万级高并发测试–MySpace云测试CloudTest™...

    2009年12月MySpace在新西兰对用户推出了音乐和视频的服务功能,这些新功能包括能够观看音乐录像,艺术家的视频搜索,创建收藏夹列表,等等.因为MySpace网站在任何国家每日的访问量是巨大的,这 ...

  5. 刘志勇:微博短视频百万级高并发架构

    本文来自新浪微博视频平台资深架构师刘志勇在LiveVideoStackCon 2018讲师热身分享,并由LiveVideoStack整理而成.分享中刘志勇从设计及服务可用性方面,详细解析了微博短视频高 ...

  6. mysql 亿级高并发_亿级流量系统架构之如何设计每秒十万查询的高并发架构.md

    亿级流量系统架构之如何设计每秒十万查询的高并发架构 一.前情回顾 上篇文章(亿级流量系统架构之如何设计承载百亿流量的高性能架构)聊了一下系统架构中,百亿流量级别高并发写入场景下,如何承载这种高并发写入 ...

  7. kafka是如何做到百万级高并发低迟延的?

    Kafka是高吞吐低延迟的高并发.高性能的消息中间件,在大数据领域有极为广泛的运用.配置良好的Kafka集群甚至可以做到每秒几十万.上百万的超高并发写入.Kafka到底是如何做到这么高的吞吐量和性能的 ...

  8. 你们说说kafka是如何做到百万级高并发低迟延的?

    Kafka是高吞吐低延迟的高并发.高性能的消息中间件,在大数据领域有极为广泛的运用.配置良好的Kafka集群甚至可以做到每秒几十万.上百万的超高并发写入.Kafka到底是如何做到这么高的吞吐量和性能的 ...

  9. 【揭秘】12306是如何抗住几亿日活、百万级高并发的?

    [欢迎关注微信公众号:厦门微思网络] 微思网络(官网):https://www.xmws.cn/ 每到节假日期间,一二线城市返乡.外出游玩的人们几乎都面临着一个问题:抢火车票! 虽然现在大多数情况下都 ...

最新文章

  1. qt实现-给SQLITE添加自定义函数
  2. 黑客技术的网站(❤️可以自学,建议收藏❤️)
  3. 【Spark Summit EU 2016】摆脱传统ETL,让我们走向Spark吧!
  4. springboot日志可视化_spring boot面试问题集锦
  5. leetcode 703. 数据流中的第 K 大元素(堆)
  6. 得到的 飞鸽 传书结果就是int * pointer;
  7. 进入hadoop_hadoop:伪分布模式参数配置指南
  8. 2014.11.12模拟赛【美妙的数字】| vijos1904学姐的幸运数字
  9. 使用VS 2019,.NET Core 3和Web API创建ASP.NET Core Blazor CRUD应用程序
  10. APT攻防整理-攻击方法/工具
  11. 邮箱登陆html,用html写的简单的邮箱登陆界面
  12. 法兰克焊接机器人编程入门_FANUC机器人应用
  13. 浅谈MFC中BitBlt与StretchDIBits的区别
  14. 2021莆田六中一高考成绩查询,莆田六中2018年高一新生录取名单完整版
  15. 什么是二级域名,什么是二级目录?
  16. html怎么让滚动条不占位置,css怎么设置滚动条不占宽度?
  17. 音乐APP首页框架搭建
  18. Window系统64位下的x86文件夹
  19. 2022.11.28 英语背诵
  20. 联合循环——16(电缆终端接地总结)

热门文章

  1. Linux之time命令
  2. Exception的妙用
  3. ipset-linux防火墙的扩展实现对指定ip的限制访问
  4. mariadb multi-source replication(mariadb多主复制)
  5. Objective-C ---JSON 解析 和 KVC
  6. 【cocos2d-x从c++到js】10:JS与C++的交互2——JS与C++的“函数重载”问题
  7. devExpress 7.2.5
  8. VISTA系统下装AUTOCAD 2006
  9. tensorflow eager 模式下打印dataset中的数据
  10. 2-7 hash(2)