Introduction To Inodes

Today we had an interesting problem for a project. We were getting the message ‘disk is full’ despite having plenty of free space. Luckily my first thought was ‘inodes?’

 I logged in and checked inode usage

$ df -i
Filesystem   Inodes    IUsed    IFree   IUse% Mounted on
/dev/xvda1   525312   524844   468   100%   /
tmpfs           1007942   1102  1006840    1% /run

This shows that all the inodes on the disk itself are full.

 High inode usage is usually caused by a massive number of small files. In this case, the session files are normally stored somewhere temporary and removed when not in use. Either there could have been a bug in the code not removing them or it was a higher traffic website.

So we can see that inode is a very important aspect of Linux, so this blog will take u to a detailed journey to inodes.

Continue reading “Introduction To Inodes”

Continuation Of Redis Throughput and Management

As promised in our previous blog on Redis Performance tunning and Best practices, we have explored more best practices and optimizations in Redis as a cache and database management system. This blog will share some new findings and optimizations we learned in our previous blog’s delta period.

We know that Redis is a high-speed and flexible data storage that can fulfill different cache and database requirements. But if a system is not configured and tested correctly, even a fast and reliable one can quickly become limited. Here we will talk about the different needs of Redis as a system and how we can optimize it further to fully use it.

So while consulting and collaborating with different Redis architects from Redis Labs, I learned different ways of designing a performance-grade, highly available, and secure Redis architecture. Based on my learning, I would like to categorize it into these dimensions:-

  • Right-sizing and deployment of Redis setup.
  • Proxy and connection pooling.
  • Use the correct data type for storing keys.
  • Sharding and replication strategy.
Continue reading “Continuation Of Redis Throughput and Management”

All Redis Setup Under 7 Minutes!

Redis is a popular open-source in-memory database that supports multiple data structures like strings, hashes, lists, and sets. But similar to other tools, we can scale standalone Redis to a particular extent, but not beyond that. That’s why we have a cluster mode setup in which we can scale Redis nodes horizontally and then distribute data among those nodes.

Generally, we categorize the Redis setup into three different types:

  • Standalone
  • Leader-Follower (Replication)
  • Leader-Leader(Sharding)

Standalone Setup

In a Standalone setup, the complexity is minimal, but we cannot scale the solution if the data increases. Also, the fail-over and high availability will not be supported inside it.

Continue reading “All Redis Setup Under 7 Minutes!”

AWS Gateway LoadBalancer: A Load Balancer that we deserve

Nowadays, LoadBalancing is one of the basic needs for the application systems to perform optimally while considering some important factors like- scalability and high availability. Every cloud is providing LBaaS (LoadBalancing as a Service) as an offering so the consumers don’t have to worry about the setup and management of load-balancers by themselves.

But it’s not like that cloud is offering a single type of load balancer for every use case because for different use-case we require a different type of load balancer. For example- we have different load-balancers for Layer4 and Layer7 level traffic.

Recently AWS had a new family member in their load-balancer family and they named it “Gateway Load Balancer“. So gateway load-balancer is a load-balancing service provided by AWS to send traffic to the different appliances, applications, firewalls, etc. that are not part of the current VPC.

Continue reading “AWS Gateway LoadBalancer: A Load Balancer that we deserve”

How To Debug a Bash Shell Script?

What is Shell?

The UNIX shell program interprets user commands which are either directly entered by the user, or which can be read from a file called the shell script or shell program. Shell scripts are interpreted, not compiled. The shell reads commands from the script line per line and searches for those commands on the system. Continue reading “How To Debug a Bash Shell Script?”