Recent Posts
-
May 25, 2015
Posgresql不明数据文件占用大量磁盘空间
对某应用做压力测试,发现postgresql的把磁盘空间用完了,数据库操作都失败了。因为这个应用有对某表的大量insert/update/delete(移到历史表)的操作。怀疑是历史表数据太多了,在pgadmin 里面操作删除了历史表,结果磁盘空间没有明显改变。对数据库和表做 VACUUM full 操作,磁盘占用不变。用下面的数据库命令查看,确实是改测试数据库占用了磁盘空间将近50GB,但改数据库里面最大的表占用的空间才400多MB。不清楚磁盘占用到底用在哪里了。查看数据库和表占用的磁盘...
-
May 22, 2015
Postgresql的存储过程返回表的多个column(row)的例子
postgresql支持的存储过程支持标准的sql语法和自己扩展的pl/pgsql。甚至c的代码,不知道那个怎么写了。Stored procedure的优点http://en.wikipedia.org/wiki/Stored_procedure标准sqlCREATE OR REPLACE FUNCTION test_select(IN id text) RETURNS SETOF test_table_name AS $$SELECT * FROM test_talbe_name whe...
-
May 07, 2015
用systemtap跟踪打印动态链接库的所有c++函数调用过程
ltrace 的问题 用ltrace 可以打印所有的so文件调用了。但上次试过如果so是自己用dlopen来加载的。就是在elf结构里面没有对应的依赖项的情况下,ltrace好像是没有做对应的调用了。用systemtap的就没有这个问题,打印输出也更灵活一些。 systemtap的解析c++ 函数问题 systemtap的 probe point 指定函数名,是支持c++ 方式指定名字的。但默认的打印输出却只能输出函数名,不包含c++ 类名。 c++...
-
April 30, 2015
Android 的音量控制代码
本来希望能够控制 电话 铃声和 短信通知铃声,分开设置的。但看上去android的 api没有单独控制通知铃声大小的了。 stream_ring 和 stream_notification 是一样的。文档adjustStreamVolume的说明确实没有提到可以设置stream_notification 的。android studio 的apk编译, 需要通过 build -》 Generate Signed Apk 生成。先创建一个keystore 文件,随便填个ca机构就...
-
April 24, 2015
Postgresql性能和tps相关的几个知识
性能测试工具 可以执行指定的sql脚本文件,做压力测试,不过自己本身也有TPC-B 测试apt-get install postgresql-contrib-9.4pgbenchpgbench -i -U smsc smsc先要初始化一下,它建几个用于测试的表,不过如果运行自定义sql脚本文件应该是用不上的pgbench -r -c 16 -T 30 -U smsc -f ./insert.sql smsc 参考文档关于配置说明的部分,搞懂postgre...
-
August 04, 2014
Linux 内核的tcp连接状态分析(systemtap的tcp_trace.stp和call_granh.stp脚本
下载LOFTER我的照片书 |做一个网络断开导致tcp连接错误的测试,程序本来是想依赖keepalive来探测到tcp死链接,结果测试中发现的情况有3种:1.如果网络断开时,tcp连接双方没有数据通讯,那么等tcp keepalive时间到了之后,keepalive timer生效发送几次keepalive探测包之后对方没有回应,内核会关闭连接。这个keepalive超时的总时间除了keepalive相关的几个选项之后,用户设置的TCP_USER_TIMEOUT选项的超时时间也起作用。这...
-
July 28, 2014
Windows 7 createthread创建线程个数限制
程序采用CreateThread 函数创建线程http://msdn.microsoft.com/en-us/library/windows/desktop/ms682453(v=vs.85).aspxcreatethread函数失败,调用 GetLastError获取错误,是内存不足。根据msdn的说明,这个线程个数只受可用内存限制。还有系统默认stacksize的大小有关。系统默认的stacksize是1M,所以32位系统最多可以创建2G/1M = 2000个左右的线程。 这个默认...
-
June 17, 2014
Google又开源了一个数据序列化的库flatbuffers
说是比protocol buffer这些要快,关键一点就是数据赋值和读取就是编解码了,不需要额外的编解码步骤了。 看上去基本的数据类型和复合数据类型非常丰富(structs, tables, vectors,..) ,看上比protocol buffer要简单的样子,使用起来也会方便一些?之前转了好多篇 “数据序列化的”各种新的开源库了, thrift , protocol buffer,Simple Binary Encoding (SBE)。Simple Binary Encodi...
-
June 16, 2014
信号安全函数(signal safe function)和死锁问题
下载LOFTER我的照片书 |看到微博上有人说到在signal handler里面使用localtime函数导致死锁的问题。http://idning.github.io/twemproxy-deadlock-on-signal_handler.html文章里面有一个总结:Reentrant:不使用全局变量.不调用non-reentrant函数.Thread-safe:要求较低,可以访问全局变量,不过需要加锁每次调用它返回不同的结果也没关系Async-Signal-Safe:...
-
June 05, 2014
Tcp的死连接检测(dead peer),重传计时器,各种timeout超时选项(tcp_user_timeout),keepalive,heartbeart心跳机制等
下载LOFTER我的照片书 |1.tcp超时重传设置--------------------root@debian02:/opt# cat /proc/sys/net/ipv4/tcp_retriestcp_retries1 tcp_retries2root@debian02:/opt# cat /proc/sys/net/ipv4/tcp_retriestcp_retries1 tcp_retries2root@debian02:/opt# cat /proc/sys/...