查看本机的出口公网IP信息:
curl ifconfig.me
或者:
curl cip.cc
今天遇到一个问题,在适用lararl跑脚本对老师的作息表进行拆分(一个6000多行的表拆分后带个300万行)时,发现随着脚本的运行,内存的使用量在不断增加,cpu的占用也随之在不断的增加。最后因为内存不够用而中断退出。
一开始的想可能是因为内存不够用,所以在脚本前面加入ini_set('memory_limit', '512M'); 发现内存还是不够用,又增加到1024M,2048M...,最后也没有解决问题,内存占用到50%多的时候依然会挂掉,我们的开发机是2核4G的阿里云ECS,这样不断加内存的方法显然是不行的,因为操作系统的剩余内存是有限的。
后来想,可能是数组在插入到数据库后没有unset掉,造成内存溢出。所以尝试,每次插入数组后unset掉,依然没有解决内存占用过高的问题。
最后想到,有可能是因为数据库连接的问题,在脚本执行的过程中,PDO连接一直被占用,没有被释放。随着数据量的不断增加,PDO连接需要处理的数据量一直在增加。所需要的内存也会一直增加。
按照这个思路,可以在处理完一部分数据时(比如拆分完200行时),可以断开一下PDO连接,然后重连一次,这样可以释放一次内存。
laravel里面有关数据库连接的方法在vendor/laravel/framework/src/Illuminate/Database/DatabaseManager.php中,disconnect()可以断开PDO连接,reconnect()断开连接后重连,但是这两个方法都是只断开不会释放连接,当再次连接时,直接从 $this->connections数组中取出来。purge()断开连接后,会将他从$this->connections中unset掉,释放内存。看来就是这个方法了。
\DB::connection()->enableQueryLog(); $result = \DB::select('select * from activity'); $log = \DB::getQueryLog(); dd($log); \error_log('$log = ' . print_r($log, true) . "\n", 3, "/tmp/error.log");
今天遇到github的仓库克隆不下来,报错如下:
fatal: unable to access 'https://github.com/fisher-yu/golang.git/': SSL connect error
过完年回来, github不安分了, 发现博文说不支持TLSv1/TLSv1.1: Weak cryptographic standards removed, 没看到这篇博文之前, 还以为是代理问题, 设置过, 还是不行, 还更新到最新的git, 还是不行, 就查了一下TLS协议, 终于通过git的文档中获得提示: git配置文档.
首先, 更新git, 我也没查过要更新到什么版本, 反正之前用1.8有问题, 接下来的操作都不起效, 换了2.16以后才可以, 有条件就更到最新呗. 至于怎么更新, 自己查资料, 我就不喜欢惯着你们. PS:OpenSSL和libcurl可能也要升级
然后就开始设置了, 就一行命令
git config --global http.sslversion tlsv1
理论上来说, 应该是不支持TLSv1的, 但设置成tlsv1才行, 其他的tlsv1.2什么的都不行, 我也不知道啊, 求指教, 求科普
因为是刚找到的方法, 也许其他大神还没有发现这问题, 如果有更好的办法, 请不吝指教.
这里用的工具是vagrant 1.8.7,VirtualBox 5.0.40, CentOS 7.4 (Minimal)
1.root的密码需要设置为vagrant
2.创建用户vagrant时将vagrant设置成为管理员,这样就可以将vagrant加入到wheel组中了,vagrant的密码也是vagrant
vi /etc/sysconfig/network-scripts/ifcfg-e[Tab]
将ONBOOT=no改为ONBOOT=yes
systemctl stop firewalld.service #停止firewall firewall-cmd --state #查看默认防火墙状态(关闭后显示not running,开启后显示running) systemctl disable firewalld.service #禁止firewall开机启动
yum -y install net-tools
安装完后可以用ifconfig查看桥接网卡的ip地址,选一个自己喜欢的ssh客户端软件(如putty)连接到虚拟机。