技术人,总要用自己的能力获得点收益的。
所以我偶尔在 QQ 群里找点单子做,主要是爬虫和数据处理相关的。
于是我昨天晚上接到了一个单子,是这样的:
客户描述安装某个库失败,附有报错截图,初步猜测原因,接。
顺着我猜测的原因,直接让他截图报错信息的最后一段,果然是 Microsoft C++ 14.0 or greater is required,锁定问题。
简单来说就是这个库在发布的时候没有生成 Windows 平台的安装包,所以需要从源代码编译,但他的电脑上缺少编译工具。
远程,从一个网站上找到对应版本的安装包,用命令行装上,打开 PyCharm 运行代码,报错 No Module Named ...,不慌,看右下角解释器信息,果然是虚拟环境,更改设置,再次运行,完美。
这一单 40,算是捡钱。
于是,今天晚上我收到了他的另外一个需求,程序报错帮忙解决。
既然已经结单了,那出问题别找我,这个库不是我装的,报错和我没关系......什么你再下一单?行,我做。
一个 NumPy 的报错(NumPy 是 Python 的一个矩阵计算库),分配内存失败,简单查一下,原因是内存不足。
于是客户想让我帮他运行一下,我随便报了个价,30。
文件发过来,700MB 的压缩包,上次帮他远程的时候看了下配置,8GB 内存,看来我电脑也没法跑。本机建个虚拟环境试一下,果然内存不足报错。
这简单,用万能的阿里云啊。
阿里云抢占式内存实例,一小时才不到一块钱,这波净赚 29,信息差,不亏。
ECS 云服务器 - 新建实例 - 抢占式实例,选好配置,设密码,一个小时才一毛钱多点,下单。
啥?余额不足 100 不能用按量付费服务?行,又不是没钱,于是:
打开 XShell 连接 SSH,装 Python,装库,Xftp 传输文件,顺手装上个 htop 做性能监控,这波叫轻车熟路。
不得不说 Linux 上装软件就是简单,apt install 就完事了。
把数据移动进输入目录,运行程序,右侧的 htop 上内存占用量增长,变红,回落,左侧终端显示 Killed。
内存不足,程序无了。
说完全不惊讶是不可能的,平时数据分析偶尔也会开这个配置的服务器,从来没出现过这种情况。
跟客户吐槽一下,删掉实例,开个 64GB 的。
重复以上操作,运行,重复 Killed。
行吧,找下教程,建个 15GB 的 swap 文件。
Linux 上的 swap 文件相当于 Windows 的虚拟内存,只不过因为 Linux 的受众群体大多是企业,很少出现内存不足的情况,而磁盘交换会影响性能,所以阿里云的服务器上 swap 默认是关闭状态。
继续运行,然后......
我这 64 + 15 = 79GB 的内存,居然连一个 150 多行的 Python 程序都跑不了?
这单子我不做也罢,退单,销毁实例。
不忘在群里说了句这程序优化太垃圾了,顺便 @ 客户。
好奇心驱使我打开了这个代码文件,是一个地理相关的程序,涉及到矩阵运算。
看了一会,除了他用到的这个库我不熟悉,其它代码我都能看懂,也没有什么很明显的内存问题(比如临时变量没释放之类)。
哦对,这个程序没有多进程,运行的时候真的是一核有难 23 核围观,为啥不是 7 核呢?因为我去查了下这颗 CPU,一共 24 个核心,只是虚拟化只给了我八个。
至于这颗 CPU 多少钱,我在京东上找到一台塔式服务器是这个 CPU,整机价格 37000 元。
提到塔式服务器,吐槽我家长单位的某台服务器,具体型号忘记了,风扇后面就是墙,而且两个冗余电源只插了一个。
像这种程序,我给他找了两个备选方案:
就这样,收工。