Skip to content

Instantly share code, notes, and snippets.

@stephenplusplus
Last active February 26, 2018 19:15
Show Gist options
  • Select an option

  • Save stephenplusplus/149860c3b77a55d08818348d8db936d5 to your computer and use it in GitHub Desktop.

Select an option

Save stephenplusplus/149860c3b77a55d08818348d8db936d5 to your computer and use it in GitHub Desktop.
Memory Usage: 21Mb
Memory Usage: 32Mb
Memory Usage: 28Mb
Memory Usage: 25Mb
Memory Usage: 23Mb
Memory Usage: 36Mb
Memory Usage: 33Mb
Memory Usage: 31Mb
Memory Usage: 28Mb
Memory Usage: 39Mb
Memory Usage: 36Mb
Memory Usage: 34Mb
Memory Usage: 21Mb
Memory Usage: 32Mb
Memory Usage: 25Mb
Memory Usage: 34Mb
Memory Usage: 20Mb
Memory Usage: 20Mb
Memory Usage: 21Mb
Memory Usage: 25Mb
Memory Usage: 21Mb
Memory Usage: 25Mb
Memory Usage: 22Mb
Memory Usage: 29Mb
Memory Usage: 26Mb
Memory Usage: 30Mb
Memory Usage: 21Mb
Memory Usage: 32Mb
Memory Usage: 29Mb
Memory Usage: 26Mb
Memory Usage: 23Mb
Memory Usage: 34Mb
Memory Usage: 32Mb
Memory Usage: 29Mb
Memory Usage: 40Mb
Memory Usage: 36Mb
Memory Usage: 33Mb
Memory Usage: 30Mb
Memory Usage: 41Mb
Memory Usage: 21Mb
Memory Usage: 32Mb
Memory Usage: 30Mb
Memory Usage: 27Mb
Memory Usage: 23Mb
Memory Usage: 34Mb
Memory Usage: 31Mb
Memory Usage: 29Mb
Memory Usage: 26Mb
Memory Usage: 38Mb
Memory Usage: 36Mb
Memory Usage: 33Mb
Memory Usage: 30Mb
Memory Usage: 21Mb
Memory Usage: 32Mb
Memory Usage: 29Mb
Memory Usage: 26Mb
Memory Usage: 23Mb
Memory Usage: 35Mb
Memory Usage: 32Mb
Memory Usage: 29Mb
Memory Usage: 27Mb
Memory Usage: 38Mb
Memory Usage: 35Mb
Memory Usage: 33Mb
Memory Usage: 30Mb
Memory Usage: 21Mb
Memory Usage: 32Mb
Memory Usage: 29Mb
Memory Usage: 26Mb
Memory Usage: 23Mb
Memory Usage: 35Mb
Memory Usage: 32Mb
Memory Usage: 30Mb
Memory Usage: 27Mb
Memory Usage: 38Mb
Memory Usage: 35Mb
Memory Usage: 33Mb
Memory Usage: 30Mb
Memory Usage: 21Mb
Memory Usage: 32Mb
Memory Usage: 29Mb
Memory Usage: 26Mb
Memory Usage: 23Mb
Memory Usage: 35Mb
Memory Usage: 32Mb
Memory Usage: 29Mb
Memory Usage: 26Mb
Memory Usage: 38Mb
Memory Usage: 35Mb
Memory Usage: 32Mb
Memory Usage: 21Mb
Memory Usage: 32Mb
Memory Usage: 29Mb
Memory Usage: 26Mb
Memory Usage: 24Mb
Memory Usage: 35Mb
Memory Usage: 32Mb
Memory Usage: 30Mb
Memory Usage: 27Mb
Memory Usage: 38Mb
Memory Usage: 35Mb
Memory Usage: 20Mb
Memory Usage: 32Mb
Memory Usage: 28Mb
Memory Usage: 26Mb
Memory Usage: 23Mb
Memory Usage: 34Mb
Memory Usage: 31Mb
Memory Usage: 29Mb
Memory Usage: 26Mb
Memory Usage: 38Mb
Memory Usage: 35Mb
Memory Usage: 32Mb
Memory Usage: 29Mb
Memory Usage: 20Mb
Memory Usage: 31Mb
Memory Usage: 28Mb
Memory Usage: 26Mb
Memory Usage: 23Mb
Memory Usage: 34Mb
Memory Usage: 31Mb
Memory Usage: 28Mb
Memory Usage: 40Mb
Memory Usage: 37Mb
Memory Usage: 34Mb
Memory Usage: 22Mb
Memory Usage: 33Mb
Memory Usage: 29Mb
Memory Usage: 27Mb
Memory Usage: 38Mb
Memory Usage: 35Mb
Memory Usage: 32Mb
Memory Usage: 31Mb
Memory Usage: 42Mb
Memory Usage: 38Mb
Memory Usage: 38Mb
Memory Usage: 36Mb
Memory Usage: 21Mb
Memory Usage: 32Mb
Memory Usage: 28Mb
Memory Usage: 25Mb
Memory Usage: 36Mb
Memory Usage: 34Mb
Memory Usage: 32Mb
Memory Usage: 29Mb
Memory Usage: 40Mb
Memory Usage: 38Mb
'use strict'
const arrify = require('arrify')
const log = require('kittie')
const pubsub = require('./lib/pubsub')({
keyFilename: './keyfile.json'
})
let count = 0;
;(async function() {
const topic = await pubsub.getTopic('mem-test')
const subscription = await topic.getSubscription('gce')
listen(subscription)
}())
async function listen(subscription) {
const stream = await subscription.streamingPull()
stream
.on('error', error => log.error(error))
.on('data', data => {
// log.info(`${data.receivedMessages.length} messages received.`)
const ackIds = arrify(data.receivedMessages)
.reduce((ids, message) => ids.concat(message.ackId), [])
count += ackIds.length
stream.ack(ackIds)
if (count > 1000) {
stream.pause()
count -= 1000
reportMemoryUsage(stream);
}
})
.on('status', status => {
log.info('Closing stream.');
stream.destroy()
if (isRetryable(status)) {
return setImmediate(() => listen(subscription))
}
log.error('Unrecoverable error occured')
})
stream.write({
subscription: subscription.name,
streamAckDeadlineSeconds: 10
})
}
function isRetryable(status) {
return [0, 1, 4, 8, 13, 14].indexOf(status.code) > -1
}
function reportMemoryUsage(stream) {
const mem = process.memoryUsage();
console.log(`Memory Usage: ${Math.ceil(mem.heapUsed / 1000 / 1000, 2)}Mb`);
setTimeout(function () {
stream.resume()
}, 2000)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment