当前位置: 首页 > news >正文

站内推广固原住房和城乡建设厅网站

站内推广,固原住房和城乡建设厅网站,老鹰网站建设,河南中国建设银行官网站前言 这是一个 之前使用 spark 的时候 记一次 spark 读取大数据表 OOM OutOfMemoryError: GC overhead limit exceeded 因为一个 OOM 的问题, 当时使用了 fetchSize 的参数 应用服务 hang 住, 导致服务 503 Service Unavailable 在这个问题的地方, 出现了一个查询 32w 的数据…前言 这是一个 之前使用 spark 的时候 记一次 spark 读取大数据表 OOM OutOfMemoryError: GC overhead limit exceeded 因为一个 OOM 的问题, 当时使用了 fetchSize 的参数  应用服务 hang 住, 导致服务 503 Service Unavailable 在这个问题的地方, 出现了一个查询 32w 的数据, 呵呵 这里又看了一下 fetchSize 的相关, 需要梳理一下 fetchSize 这块的东西 但是 当时不知道 这个 fetchSize 所影响的 客户端 和 服务器 之间交互的具体的处理  这里 来看一下  测试用例  需要体现是否使用 fetchSize 的差异, 只需要 切换 getDataSource 的 url, 有 useCursorFetchtrue 为使用 fetchSize  /*** Test25MysqlFetchSize** author Jerry.X.He 970655147qq.com* version 1.0* date 2022-10-15 14:03*/ public class Test25MysqlFetchSize {// Test25MysqlFetchSizepublic static void main(String[] args) {String[] authInfo {127.0.0.1, 3306, test, postgres, postgres};DataSource ds getDataSource(authInfo[0], Integer.parseInt(authInfo[1]), authInfo[2], authInfo[3], authInfo[4]);JdbcTemplate jdbcTemplate new JdbcTemplate(ds);jdbcTemplate.setFetchSize(2);String sql select * from user;;ListMapString, Object list jdbcTemplate.queryForList(sql);for(MapString, Object entity : list) {System.out.println(JSON.toJSONString(entity));}}/*** 根据给定的连接信息 获取数据源** param ip ip* param port port* param dbName dbName* param username username* param password password* return java.sql.Connection* author Jerry.X.He* date 2019-08-15 11:50*/public static DataSource getDataSource(String ip, int port, String dbName, String username, String password) { // String url String.format(jdbc:mysql://%s:%d/%s?useUnicodetruecharacterEncodingUTF8useCursorFetchtruedefaultFetchSize100, ip, port, dbName);String url String.format(jdbc:mysql://%s:%d/%s?useUnicodetruecharacterEncodingUTF8, ip, port, dbName);try {return new SimpleDriverDataSource(new Driver(), url, username, password);} catch (Exception e) {return null;}}}不使用 fetchSize 的场景 客户端发送一个请求, 然后服务器 将所有的数据响应给客户端  使用 fetchSize 的场景  可以看到的是 发送了一个 sql, 以及十多条 fetch 的命令到 mysql 服务器  第一条 fetch 命令, 前 0-100 条数据  第二条 fetch 命令, 前 100-200 条数据  ...  第N条 fetch 命令, 前 (N-1)*100 - N * 100 条数据  fetchSize 为 100, 总共数据量为 1216, 然后 客户端合计发送了 13 条 fetch 的请求  4792 4.403080 127.0.0.1 127.0.0.1 MySQL 82 Request Prepare Statement 4795 4.404626 127.0.0.1 127.0.0.1 TCP 56 54350 → 3306 [ACK] Seq1207 Ack1482 Win406784 Len0 TSval966581250 TSecr966581250 4802 4.407809 127.0.0.1 127.0.0.1 MySQL 71 Request Execute Statement 4805 4.411114 127.0.0.1 127.0.0.1 TCP 56 54350 → 3306 [ACK] Seq1222 Ack1684 Win406592 Len0 TSval966581255 TSecr966581255 4852 4.424561 127.0.0.1 127.0.0.1 MySQL 69 Request Fetch Data 4855 4.426304 127.0.0.1 127.0.0.1 TCP 56 54350 → 3306 [ACK] Seq1235 Ack4795 Win403456 Len0 TSval966581267 TSecr966581267 4872 4.436417 127.0.0.1 127.0.0.1 MySQL 69 Request Fetch Data 4875 4.438114 127.0.0.1 127.0.0.1 TCP 56 54350 → 3306 [ACK] Seq1248 Ack7906 Win400384 Len0 TSval966581277 TSecr966581277 4876 4.441996 127.0.0.1 127.0.0.1 MySQL 69 Request Fetch Data 4879 4.443469 127.0.0.1 127.0.0.1 TCP 56 54350 → 3306 [ACK] Seq1261 Ack11017 Win397248 Len0 TSval966581281 TSecr966581281 4880 4.446411 127.0.0.1 127.0.0.1 MySQL 69 Request Fetch Data 4883 4.447904 127.0.0.1 127.0.0.1 TCP 56 54350 → 3306 [ACK] Seq1274 Ack14128 Win394112 Len0 TSval966581284 TSecr966581284 4884 4.450804 127.0.0.1 127.0.0.1 MySQL 69 Request Fetch Data 4887 4.452125 127.0.0.1 127.0.0.1 TCP 56 54350 → 3306 [ACK] Seq1287 Ack17239 Win391040 Len0 TSval966581287 TSecr966581287 4888 4.454689 127.0.0.1 127.0.0.1 MySQL 69 Request Fetch Data 4891 4.456075 127.0.0.1 127.0.0.1 TCP 56 54350 → 3306 [ACK] Seq1300 Ack20350 Win387904 Len0 TSval966581290 TSecr966581290 4892 4.458345 127.0.0.1 127.0.0.1 MySQL 69 Request Fetch Data 4895 4.459971 127.0.0.1 127.0.0.1 TCP 56 54350 → 3306 [ACK] Seq1313 Ack23461 Win384832 Len0 TSval966581293 TSecr966581293 4896 4.462152 127.0.0.1 127.0.0.1 MySQL 69 Request Fetch Data 4899 4.463530 127.0.0.1 127.0.0.1 TCP 56 54350 → 3306 [ACK] Seq1326 Ack26572 Win381696 Len0 TSval966581296 TSecr966581296 4900 4.465897 127.0.0.1 127.0.0.1 MySQL 69 Request Fetch Data 4903 4.468078 127.0.0.1 127.0.0.1 TCP 56 54350 → 3306 [ACK] Seq1339 Ack29683 Win378560 Len0 TSval966581300 TSecr966581300 4904 4.469424 127.0.0.1 127.0.0.1 MySQL 69 Request Fetch Data 4907 4.471176 127.0.0.1 127.0.0.1 TCP 56 54350 → 3306 [ACK] Seq1352 Ack32794 Win375488 Len0 TSval966581302 TSecr966581302 4908 4.473213 127.0.0.1 127.0.0.1 MySQL 69 Request Fetch Data 4911 4.474650 127.0.0.1 127.0.0.1 TCP 56 54350 → 3306 [ACK] Seq1365 Ack35905 Win372352 Len0 TSval966581304 TSecr966581304 4912 4.476087 127.0.0.1 127.0.0.1 MySQL 69 Request Fetch Data 4915 4.477380 127.0.0.1 127.0.0.1 TCP 56 54350 → 3306 [ACK] Seq1378 Ack39016 Win369280 Len0 TSval966581306 TSecr966581306 4916 4.478625 127.0.0.1 127.0.0.1 MySQL 69 Request Fetch Data 4919 4.480168 127.0.0.1 127.0.0.1 TCP 56 54350 → 3306 [ACK] Seq1391 Ack39523 Win368768 Len0 TSval966581308 TSecr966581308 4920 4.480690 127.0.0.1 127.0.0.1 MySQL 65 Request Close Statement driver 层面 fetchSize 的处理 堆栈信息大致如下  应用通过 resultSet.next 向后迭代  resultSet 中 ResultsetRowsCursor 不断向后迭代当前批次的数据, 如果当前批次的数据已经迭代完毕, 重新向 mysql 服务器发送 fetch 命令, 获取下一批次的数据  如果应用不强行引用, 内内存中常驻的记录数量为 fetchSize 条记录, 进而 缩小需要占用的内存开销  完
http://www.hkea.cn/news/14271469/

相关文章:

  • ios网站开发工具有哪些软件工程主要课程
  • 做照明出口的网站做程序网站需要什么代码
  • 印刷网站 源码seo网站内容优化有哪些
  • 广南酒店网站建设seo公司电信上海百首网络
  • 每个网站都有服务器吗淘宝上网站建设是什么
  • ui毕业设计代做网站北京管庄网站建设公司
  • html网页设计网站网站关键词用什么做
  • 用python做音乐网站免费客源软件
  • 沈阳网站建设莫道网络网站代理公司
  • 网站建设使用什么软件有哪些南通市规划建设局网站
  • 三网合一网站远吗百度快照怎么看
  • 网页设计网站总结报告怎么写简易手机站
  • wordpress页面权限插件如何提高网站seo排名
  • 江门网站建设价格做排名出租网站
  • 佛山网站建设哪家专业wordpress支持手机端嘛
  • 做网站优化就是发文章吗婚纱网站论文
  • 幸运28网站代理怎么做锦溪网站建设
  • 怎么做网站推广云浮wordpress 电子杂志
  • 网站模块设计怎么做制定网络营销方案的步骤
  • apache发布多个网站天津百度百科
  • 展览设计网站推荐怎么免费建公司网站
  • 手机分销网站合肥制作网站哪家好
  • 做网站域名服务器论坛网站有哪些
  • 搜狐网站网络营销怎么做百度竞价开户3000
  • 自己做的网站跳转到购彩大厅线上引流线下推广方案
  • 双峰做网站深圳营销网站建设报价
  • 宝塔做的网站能不能访问公司网络组建方案怎么写
  • 宜兴建设公司网站网页游戏设计与制作专业
  • 网站建设合同属于技术服务么做国外网站用什么颜色
  • 免费综合网站注册申请住房和城乡建设部网站城市稽查