Performance Articles
CPU Bound Workloads with NodeJS: Processor Parallelism
As discussed in the Understanding the NodeJS Event Loop post, NodeJS is a great language for high I/O workloads. For any program or service that is expected to be I/O bound, NodeJS is arguably one of the best languages for the job due to its asynchronous event model. The single threaded, event loop architecture allows […]
Understanding the NodeJS Event Loop
While there are numerous articles and documentation written about the NodeJS event loop, I wanted to a write about the event loop to help solidify the concept for myself. Being a Node developer it is important to understand what the “event-driven, non-blocking I/O model” paradigm is and how asynchronous functions are being executed. Simply put, […]
Using Collectd With InfluxDB
Collectd is a Linux daemon used to collect system stats for performance analysis and capacity planning. With a variety of different plugins, collectd can easily be configured to collect data from a variety of different services i.e. MySQL, Apache, etc. This is an overview of how to store collectd data in InfluxDB, which is an […]
Understanding TCP and UDP
There are two popular types of protocols for sending data over a network: TCP and UDP. Both protocols are built on top of the Internet Protocol thus both send packets to an IP address. TCP/IP is the main protocol used on the Internet. When a user requests a page load a TCP connection is made […]
Hacklang Async Processing
One of the frustrations in working with PHP is the synchronous, blocking, behaviour of the language. There are PHP extensions, such as pthreads that offer quasi PHP threading; however, that requires extra considerations such as server setups, locking, shared state, etc., and is often times omitted from development discussions due to overhead/learning curve of writing […]
Ubuntu HHVM Install
Facebook’s HHVM is a Virtual Machine which runs PHP, and Hack Lang, through a just-in-time (JIT) compiler to “achieve superior performance” in executing PHP code. From HHVM’s website: Rather than directly interpret or compile PHP code directly to C++, HHVM compiles Hack and PHP into an intermediate bytecode. This bytecode is then translated into x64 […]
Apache Prefork MPM MaxClients
Apache2 comes with two different multi processing modules (MPM): Prefork MPM and Worker MPM. Usually when installing Apache via a Linux package manager, unless specifically specified, Apache will be operating with Prefork MPM. Prefork MPM uses multiple child processes, with one thread each, and each process handles one connection at a time. Worker MPM uses […]
Disable Apache Modules
The Apache web server operates by using a combination of modules. The modules are used by the Apache core and do not interact with one another, each offering unique functionality. Depending on which OS you are using, there is likely many Apache modules that are enabled by default that you do not need. Disabling this […]
PHP 5.5 with Opcache and APCu
As of PHP 5.5 Zend Opcache is a part of the core PHP distribution. PHP code is an interpreted language and is therefore parsed and compiled into opcode on every request. An Opcache allows the opcode to be stored in shared memory in which subsequent requests will be able to pull from, opposed to having […]
MySQL Master-Slave Replication
MySQL replication is the act of actively cloning all changes made on one server (master) to another server(s) (slaves). This is commonly done to create backups of data as well as to add multiple servers in which applications can query against. This becomes advantageous in high read environments where there is concern for bogging down […]